对象使用 lambda 调用自身,感到困惑

object calls itself using lambda, confused

对 java 8 lambda 表达式感到困惑。

下面是函数式接口方​​法的旧java实现方式;

 Function<Employee, Employee> employeeFunc=new Function<Employee,Employee>(){

            public Employee apply(Employee f) {
                return f;
            }
        };

这和e->e一样吗?假设 eEmployee.

object->object 执行时发生了什么?请解释

Roughly speaking, it's very similar to e -> e, or Function.identity().

正如 JLS 所说,

15.27.4. Run-Time Evaluation of Lambda Expressions

At run time, evaluation of a lambda expression is similar to evaluation of a class instance creation expression, insofar as normal completion produces a reference to an object. Evaluation of a lambda expression is distinct from execution of the lambda body.

它不是 "call itself",它是一个 lambda,它接受一个对象 returns 该对象而无需任何中间操作。

在接受 Function<Employee, Employee> 的上下文中,是的,e -> e 的行为与您提供的实施相同。 lambda 在传递参数之前不会执行,在这种情况下它只是 returns 相同的参数。