gpt4 book ai didi

java - 使用时异常? : operator in Java 8 lambda expression

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:25:51 25 4
gpt4 key购买 nike

为什么在 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 Language specification section 15.25

关于java - 使用时异常? : operator in Java 8 lambda expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25971031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com