对象使用 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
一样吗?假设 e
是 Employee
.
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 相同的参数。
对 java 8 lambda 表达式感到困惑。
下面是函数式接口方法的旧java实现方式;
Function<Employee, Employee> employeeFunc=new Function<Employee,Employee>(){
public Employee apply(Employee f) {
return f;
}
};
这和e->e
一样吗?假设 e
是 Employee
.
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 相同的参数。