回答: このスレッドの一番上の回答は、基本的に私の質問に答えます。
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コンパイラは、一般的な設定ですべての可能なループを見つけることができないため、上記の例のようなメソッドのトレースに力を入れていないと思います.