我有一个名字列表。在第 3 行,我必须将 lambda 表达式的结果转换为Predicate<String>. 我正在阅读的书解释说,为了帮助编译器确定匹配的功能接口是什么,强制转换是必要的。
但是,我不需要在下一行进行这样的演员表,因为我不调用negate(). 这有何不同?我知道negate()这里返回了Predicate<String>,但是前面的 lambda 表达式不一样吗?
List<String> names = new ArrayList<>();
//add various names here
names.removeIf(((Predicate<String>) str -> str.length() <= 5).negate()); //cast required
names.removeIf(((str -> str.length() <= 5))); //compiles without cast
Run Code Online (Sandbox Code Playgroud) java支持当前版本的6个lambda表达式或"匿名函数"吗?有没有我在java中无法用支持lambda表达式的编程语言做的事情?我知道java是完整的,所以你可以在其中做"任何事情".
为什么匿名内部类包装函数不能表示lambda演算中定义的函数?
实际上什么是匿名函数以及如何说某些语言支持匿名函数?