为什么这个方法(测试)需要一个返回值(它总是为真)?
public boolean test() { //This method must return a result of type boolean
if (true) {
return true; // always return true
}
}
当我添加返回值时,它会警告为“死代码”。那么,为什么不首先接受 test()
方法
public boolean test(int i) {
if (true) {
return true;
} else { //Dead code
return false;
}
}
最佳答案
方法返回分析不会分析 if
条件以查看它是否始终为 true 或 false,因为通常它不会是编译时常量(否则您不会编写一个 if
在第一位)。它只是看到有一个 if
可以或不可以采用,如果不采用,则该方法不会返回值,因此会出现错误。
死代码分析是在方法返回分析的单独传递中完成的,方法返回分析会进行一些更深入的分析,以查看分支条件。
我完全不知情的猜测是这种行为是编译器开发方式的产物;方法返回分析是编译的重要组成部分,可确保您最终获得有效的程序,因此是首先实现的核心功能之一。死代码分析是一个“可有可无”,因此后来使用更复杂的算法实现了(因为核心编译器位已在该阶段完成)
关于java - 为什么方法在语句之后需要一个始终返回 true 的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4562045/