Hallo zusammen,
ich habe folgenden Code unten, der von Eclispe mockiert wird, dass nämlich in der Zeile 12 ein dead code vorliegt (bitte nicht den Code bewerten, er ist extra für diese Frage konstruiert - das eigentliche Problem hatte ich ganz woanders).
Falls die Zeile 8 (System.out.print(line.toString())😉 auskommentiert wird, wird kein Dead Code angezeigt (natürlich).
Macht der Compiler hier alles richtig?
Scheinbar geht er davon aus, dass wenn line.toString() aufgerufen wird, line niemals null sein kann und somit die Abfrage "if (line != null)" niemals false ist, was den else-Fall obsolet macht.
Oder allgemein gesprochen: Der Compiler zieht (voreilige) Schlüsse üver die Existenz von Objekten aufgrund ihrer Verwendung(?).
ich habe folgenden Code unten, der von Eclispe mockiert wird, dass nämlich in der Zeile 12 ein dead code vorliegt (bitte nicht den Code bewerten, er ist extra für diese Frage konstruiert - das eigentliche Problem hatte ich ganz woanders).
Falls die Zeile 8 (System.out.print(line.toString())😉 auskommentiert wird, wird kein Dead Code angezeigt (natürlich).
Macht der Compiler hier alles richtig?
Scheinbar geht er davon aus, dass wenn line.toString() aufgerufen wird, line niemals null sein kann und somit die Abfrage "if (line != null)" niemals false ist, was den else-Fall obsolet macht.
Oder allgemein gesprochen: Der Compiler zieht (voreilige) Schlüsse üver die Existenz von Objekten aufgrund ihrer Verwendung(?).
Java:
public class Test {
public static void main(String[] args) {
System.out.println("Test gestartet");
int iterator = 0;
while(true) {
iterator ++;
String line = ( iterator <= 10) ? ""+iterator : null;
System.out.print(line.toString()); // führt zu dead code im else Fall (eclipse 3.6.2)
if(line != null) {
System.out.println();
} else
break;
}
System.out.println("Test beendet");
}
}
Zuletzt bearbeitet: