【发布时间】:2016-02-09 18:32:43
【问题描述】:
在 Java 8 中使用 lambda 时,我遇到了以下函数式接口。
@FunctionalInterface
interface MyFunctional {
void invokeSame(MyFunctional myFunc);
}
您能告诉我如何为这个函数式接口提供 lambda 表达式吗?
【问题讨论】:
标签: lambda functional-programming java-8
在 Java 8 中使用 lambda 时,我遇到了以下函数式接口。
@FunctionalInterface
interface MyFunctional {
void invokeSame(MyFunctional myFunc);
}
您能告诉我如何为这个函数式接口提供 lambda 表达式吗?
【问题讨论】:
标签: lambda functional-programming java-8
与任何其他一个参数和 void 返回类型 lambda 的方式相同:
MyFunctional f = myFunc -> {};
【讨论】:
概念: java 8 lambdas 中的类型检查是基于目标(作为参数传递给它的函数)完成的。
说明:一般一个函数由3个属性定义:
但是在传递 lambda 时,Java 只检查最后两个。因此,对于上述函数式接口,我们需要具有 [first] 参数类型 MyFunctional 和返回类型 void 的 lambda。
void doSomething(MyFunctional x) {
...
...
x.invokeSame(...An object/lambda of type MyFunctional...)
}
To call this function
doSomething(varName -> { ...someCode... })
【讨论】: