Weil es ein toter Code ist. Die Analyse des toten Codes erfolgt in einem separaten Durchgang zur Analyse der Methodenrückgabe, die eine tiefer gehende Analyse durchführt, bei der die Verzweigungsbedingungen berücksichtigt werden.
Die folgende Methode in Java wird korrekt kompiliert.
%Vor% Die Methode hat einen expliziten Rückgabetyp, der java.lang.String
ohne return
-Anweisung ist, obwohl es gut kompiliert wird. Die folgende Methode kann jedoch nicht kompiliert werden.
Ein Kompilierungsfehler wird ausgegeben, der " fehlende return
-Anweisung " anzeigt, obwohl die mit der if
-Anweisung angegebene Bedingung immer wahr ist (sie hat eine boolean
-Konstante, die niemals ist wird weder durch Reflexion verändert). Die Methode muss für ihre erfolgreiche Kompilierung wie folgt geändert werden.
oder
%Vor% In Bezug auf den ersten Fall mit der while
-Schleife scheint der zweite Fall legal zu sein, obwohl er nicht kompiliert werden kann.
Gibt es einen Grund im zweiten Fall jenseits einer der Funktionen des Compilers.
Die folgende Methode in Java wird korrekt kompiliert.
%Vor%Die Methode hat einen expliziten Rückgabetyp, der %code% ohne %code% -Anweisung ist, obwohl es gut kompiliert wird. Die folgende Methode kann jedoch nicht kompiliert werden.
%Vor%Ein Kompilierungsfehler wird ausgegeben, der " fehlende %code% -Anweisung " anzeigt, obwohl die mit der %code% -Anweisung angegebene Bedingung immer wahr ist (sie hat eine %code% -Konstante, die niemals ist wird weder durch Reflexion verändert). Die Methode muss für ihre erfolgreiche Kompilierung wie folgt geändert werden.
%Vor%oder
%Vor%In Bezug auf den ersten Fall mit der %code% -Schleife scheint der zweite Fall legal zu sein, obwohl er nicht kompiliert werden kann.
Gibt es einen Grund im zweiten Fall jenseits einer der Funktionen des Compilers.
Aus dem Java-Tutorial: Sie können eine Endlosschleife mit der Anweisung while wie folgt implementieren:
%Vor%Der Compiler weiß also, dass dies unendlich ist und daher nicht zurückgegeben werden kann - dh, dass er nicht unbedingt eine return-Anweisung benötigt.
Die %code% -Linie (für sich allein) kehrt dagegen zurück und muss daher alle zurückkehrenden Zweige abdecken.
Weil es ein toter Code ist. Die Analyse des toten Codes erfolgt in einem separaten Durchgang zur Analyse der Methodenrückgabe, die eine tiefer gehende Analyse durchführt, bei der die Verzweigungsbedingungen berücksichtigt werden.
Aus dem Java-Tutorial: Sie können eine Endlosschleife mit der Anweisung while wie folgt implementieren:
%Vor%Der Compiler weiß also, dass dies unendlich ist und daher nicht zurückgegeben werden kann - dh, dass er nicht unbedingt eine return-Anweisung benötigt.
Die if (true)
-Linie (für sich allein) kehrt dagegen zurück und muss daher alle zurückkehrenden Zweige abdecken.
Tags und Links java loops if-statement