The following Java 8 code snippet assumes iteration over a list of binary (2-arg) operators / lambda functions. Eclipse generates an error The method o(int,int) is undefined for the type X
. The error is related to the loop variable o
. In case it matters, the Eclipse version is the Eclipse Java EE IDE for web developers, the Mars Release version (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);
}
}
}
However, if the op type is changed to List, there is no compiler error.
public void f(List<Integer> op) {
for (Integer o : op) {
int x = o;
}
}
Why does for-loop work for List<Integer>
, but not for List<BinaryOperator<Integer>>
, and how should I list lambda function lists in Java 8?
source
share