为什么此方法(测试)需要返回值(始终为true)?
public boolean test() { //This method must return a result of type boolean
if (true) {
return true; // always return true
}
}
当我添加返回值时,它警告为“ Dead code”。所以,为什么不接受第test()
一种方法
public boolean test(int i) {
if (true) {
return true;
} else { //Dead code
return false;
}
}
方法返回分析不会分析if
条件是否始终为true或false,因为通常它不是编译时常量(否则您一开始就不会编写if
in)。它只是看到有一个if
可以或不能采用的,如果不采用,则该方法不会返回值,因此会返回错误。
无效代码分析是在方法返回分析的单独过程中完成的,方法返回分析将对分支条件进行更深入的分析。
我完全不知情的猜测是,这种行为是编译器如何开发的产物。方法返回分析是编译的重要组成部分,以确保最终获得有效的程序,因此首先要实现的核心功能之一。死代码分析是“很不错的”,因此稍后使用更复杂的算法进行了实现(因为核心编译器位已在该阶段完成)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句