gpt4 book ai didi

Java 8 : Why Effectively Final variable doesn't work for switch block?

转载 作者:行者123 更新时间:2023-12-01 07:47:48 25 4
gpt4 key购买 nike

为什么 Final 变量有效地适用于函数而不适用于 switch block ?

下面的例子给出了编译错误

    String comparing = " ";
String effectivelyFinal = "Hello ";
switch(comparing){
case effectivelyFinal :
System.out.println("Are equal");
break ;
default :
System.out.println("Are not equal");
}
Predicate<String> areEqual = s -> s.equals(effectivelyFinal);

最佳答案

代码无法编译只是因为使用 switch case 时只能比较常量表达式。而使用 lambda(匿名函数),我们就不受此限制。

只是为了澄清更多的困惑,有效最终只是意味着一个变量或参数,其值在初始化后从不更改,但并不一定使其成为常量表达式,因为您可以更改它;在这种情况下,它不再是有效的最终,因此不允许它作为 switch case 表达式。

关于Java 8 : Why Effectively Final variable doesn't work for switch block?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47253667/

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