答案:这个线程的最佳答案基本上回答了我的问题:在非 void 方法中缺少返回语句 compiles。
我想知道为什么我不需要在这个private
方法中返回一个值?
public class Test {
private String testLoop() {
while(true) { }
}
public static void main(String[] args) {
Test test = new Test();
test.testLoop();
}
}
我觉得这不应该编译。但是,它编译得很好。这在哪里被定义为合法?
在这种情况下,我觉得将方法更改为:
private String testLoop() {
while(true) {
if(false == true) {
break;
}
}
return null;
}
即使javap告诉我编译器为testLoop
.
那么Java编译器如何以及何时决定一个方法是否真的需要返回值呢?
不幸的是,删除了一个提到停止问题的答案。我猜 Java 编译器不会像上面给出的示例那样跟踪方法,因为它无法在一般设置中找到所有可能的循环。