Java 8 for 循环不一致 : List of BinaryOperator vs List of Integer

标签 java list for-loop lambda java-8

在以下 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 函数列表?

最佳答案

如果您希望在循环中应用ListBinaryOperator,您必须为每个调用该接口(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/

相关文章:

在 JavaFX 应用程序线程以外的线程上进行 ImageIO 调用的 JavaFX 应用程序在 Mac OS X 上挂起

java - 无法将 Json String 转换为 Java 对象

r - 以增长率预测时避免循环

java - 定义 isJavaIdentifierStart 方法

java - AsyncTask 在结束 doInBackground 之前检查 MainActivity 中的变量集

list - SCHEME - 计算非原始过程的数量

python - 如何在python中设置多个循环 'for'作为函数的参数来找到将一个句点切成n份的所有可能性?

java - for 循环上的不同增量取决于 boolean 值

java - 日期格式并将该日期转换为 JodaTime

python - 如何使用两个嵌套列表来制作字典列表?