【发布时间】:2015-09-03 19:13:20
【问题描述】:
我怎样才能在 Java 8 中做这样的事情?
boolean x = ((boolean p)->{return p;}).apply(true);
现在我收到以下错误:
这个表达式的目标类型必须是函数式接口
【问题讨论】:
-
我看到的例子没有使用 {},因为它是一个单一的语句。 Tutorial
-
return p 周围没有 {} 的情况相同。我不认为这是问题所在。
-
您的错误在于假设
Function具有任何特殊状态,以便自动将 lambda 的类型强制转换为它。您的表达式实际上没有目标类型约束。 -
您可以通过告诉编译器 lambda 的类型来修复代码: boolean x = ((Function
) p->p).apply(true);
标签: java lambda java-8 functional-interface