为什么在 Java 8 lambda 表达式中使用 ?:
运算符会抛出异常?
当我尝试运行以下示例代码时:
import java.util.ArrayList;
import java.util.List;
public class TestClass
{
public static void main(String[] args)
{
List<Foo> foos = new ArrayList<>();
boolean b = true;
foos.forEach(foo -> (b ? foo.doSth(1) : foo.doSth(2)));
}
@FunctionalInterface
interface Foo
{
public void doSth(int i);
}
}
我得到以下异常:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
at gui.marksDetection.view.TestClass.main(TestClass.java:8)
当用 for-each 循环替换 lambda 表达式,或用 if-else block 替换 (b ? foo.doSth(1) : foo.doSth(2))
时,一切正常,所以组合 ?: + lambda
似乎有问题。但是,Eclipse 不会将其标记为错误。
最佳答案
关于java - 使用时异常? : operator in Java 8 lambda expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25971031/