gpt4 book ai didi

java - 编译器提示 "missing return statement"即使不可能达到缺少 return 语句的条件

转载 作者:IT老高 更新时间:2023-10-28 21:09:07 26 4
gpt4 key购买 nike

在以下方法中,编译器提示缺少返回语句,即使该方法只有一条路径,并且它包含return 语句。抑制错误需要另一个 return 语句。

public int foo() {
if (true) {
return 5;
}
}

鉴于 Java compiler can recognize infinite loops ,为什么它不处理这种情况呢?链接的问题提示,但未提供此特定案例的详细信息。

最佳答案

JLS 14.21, Unreachable Statements是处理这个的部分:

The if statement, whether or not it has an else part, is handled in an unusual manner. For this reason, it is discussed separately at the end of this section.

最终它与条件编译的处理方式有关。考虑这种方法:

public int foo() {
if (DEBUG) {
return 5;
}
}

如果DEBUGstatic final boolean true;,你可能会认为编译器应该足够聪明,以实现方法总是返回5。但如果改成false,则code不再有效。

该方法必须对通过该方法的所有路径都有效无需更改源代码,允许优化编译器在不修改源代码的情况下忽略字节码,而不管标志的值如何。

very end of the linked JLS section进入重要的细节。

关于java - 编译器提示 "missing return statement"即使不可能达到缺少 return 语句的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8863676/

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