As many of you may know, there is a classical example of the Operation enum (using Java 8 standard interface now though), that is the following:
It depends how you define better.
In your case and in my opinion, the lambdas are a pure win. You can even reuse some existing JDK functions, e.g.:
enum Operation implements DoubleBinaryOperator {
PLUS ("+", Double::sum),
...
}
This is short and readable. I don't think anything reasonable can be said about performance w/o benchmarking your code.
Lambdas are implemented with invokeDynamic to dynamically link call site to actual code to execute; no anonymous, inner classes.