Java-为什么立即执行的lambda函数会引发“在接口[...]中发现的多个非覆盖抽象方法”?

时间:2018-09-20 20:33:43

标签: java lambda java-8

List<String> list = ( () -> new LinkedList<String>() )();

上面的代码引发以下内容:Multiple non-overriding abstract methods found in interface java.util.List

此错误是什么意思?

1 个答案:

答案 0 :(得分:3)

那不是我得到的错误消息,尽管它肯定是无效的Java语法。

您不能直接使用Java语法调用lambda表达式。编译器没有用于直接调用lambda表达式的语法。

必须将其分配给功能接口类型,作为参数传递给方法或强制转换为功能接口类型。

如果将lambda表达式转换为功能接口类型(此处为Supplier),则可以显式调用它。

List<String> list = ( (Supplier<List<String>>)  () -> new LinkedList<String>() ).get();