Law*_*nce 4 java lambda for-loop list java-8
在下面的Java 8代码片段中,目的是遍历二进制(2-arg)运算符/ lambda函数列表.Eclipse生成错误The method o(int,int) is undefined for the type X
.该错误与循环变量相关联o
.如果它是相关的,Eclipse的版本是"用于Web开发人员的Eclipse Java EE IDE",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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果op的类型更改为List,则不存在编译器错误.
public void f(List<Integer> op) {
for (Integer o : op) {
int x = o;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么for循环适用于List<Integer>
但不适用于List<BinaryOperator<Integer>>
,以及如何在Java 8中迭代lambda函数列表?
如果您希望在循环中应用BinaryOperator
s List
,则必须apply
为以下每个元素调用该接口的方法List
:
public void f(List<BinaryOperator<Integer>> op) {
for (BinaryOperator<Integer> o : op) {
int x = o.apply(1,2);
}
}
Run Code Online (Sandbox Code Playgroud)