在以下 Java 8 代码片段中,目的是循环访问二进制 (2-arg) 运算符/lambda 函数列表。 Eclipse 生成错误 The method o(int,int) is undefined for the type X
.该错误与循环变量 o
相关联.如果相关,Eclipse 的版本是“Eclipse Java EE IDE for Web Developers”,Mars Release (4.5.0)。
import java.util.List;
import java.util.function.BinaryOperator;
public class X {
public void f(List<BinaryOperator<Integer>> op) {
for (BinaryOperator<Integer> o : op) {
int x = o(1,2);
}
}
}
但是如果op的类型改为List,则不会出现编译错误。
public void f(List<Integer> op) {
for (Integer o : op) {
int x = o;
}
}
为什么 for 循环适用于 List<Integer>
但不适用于 List<BinaryOperator<Integer>>
,以及如何在 Java 8 中迭代 lambda 函数列表?
最佳答案
如果您希望在循环中应用List
的BinaryOperator
,您必须为每个调用该接口(interface)的apply
方法List
的元素:
public void f(List<BinaryOperator<Integer>> op) {
for (BinaryOperator<Integer> o : op) {
int x = o.apply(1,2);
}
}
关于Java 8 for 循环不一致 : List of BinaryOperator vs List of Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33062652/