为什么这个方法(测试)需要一个返回值(它总是如此)?
public boolean test() { //This method must return a result of type boolean
if (true) {
return true; // always return true
}
}
Run Code Online (Sandbox Code Playgroud)
当我添加返回值时,它会警告为"死代码".那么,为什么不接受第test()一种方法
public boolean test(int i) {
if (true) {
return true;
} else { //Dead code
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
the*_*oop 11
方法返回分析不分析if条件以查看它是否总是真或假,因为通常它不是编译时常量(否则你不会首先编写一个if).它只是看到有一个if可以或不可以采取,如果没有采取,那么该方法不返回值,因此错误.
死代码分析是在方法返回分析的单独传递中完成的,该分析进行了一些深入分析,查看分支条件.
我完全不知情的猜测是这种行为是编译器如何开发的人工制品; 方法返回分析是编译的重要部分,以确保最终获得有效的程序,因此是首先实现的核心功能之一.死代码分析是一个"很好",所以后来使用更复杂的算法实现(因为核心编译器位由该阶段完成)
| 归档时间: |
|
| 查看次数: |
2773 次 |
| 最近记录: |