Lernen Sie, toten Code und unerreichbaren Code in Java zu identifizieren. Es kann in Ihrem Java-Interview Codierung Probleme als ein Puzzle gefragt werden.
Dead Code und unerreichbar Code Fehler
Um Konzept der toten Code, in diesem Puzzle zu machen, habe ich ein Stück Code unten gegeben. Versuchen Sie, die Probleme im Code zu identifizieren, wenn er in Eclipse IDE kompiliert wird.
Ich gebe die Antwort auf das obige Rätsel im nächsten Abschnitt, aber ich würde Ihnen empfehlen, es zuerst selbst zu versuchen. Es ist nur zum Spaß.
Lösung – Es hat toten Code
Wir alle müssen mit Kompilierungsfehlern im Zusammenhang mit „Unerreichbarem Code“ konfrontiert worden sein und einige haben vielleicht die „Warnung vor totem Code“ bemerkt. Das obige Rätsel bezieht sich nur auf sie.
In der ersten Methode howToDoInJava_method1()
ist die zweite Druckanweisung unerreichbar, so dass der Compiler sich aus unerfindlichen Gründen beschwert.
In der zweiten Methode howToDoInJava_method2()
ist die zweite Druckanweisung ebenfalls unerreichbar, aber der Compiler warnt nur. Wir werden später versuchen, die Logik hier zu verstehen.
In der dritten Methode howToDoInJava_method3()
ist auch die zweite Druckanweisung unerreichbar, also beschwert sich der Compiler wieder.
Warum !!!
Was ist toter Code
Der unerreichbare Code in Methode 2 wird „Toter Code“ genannt. Das ist nur ein von Eclipse gemeldeter Compilerfehler, und wenn man obige Klasse mit „javac“ kompiliert, wird der Java-eigene Compiler nur die anderen beiden Methoden beanstanden. .
Zitat aus der Java Sprachspezifikation –
„Die Idee ist, dass es einen möglichen Ausführungspfad vom Anfang des Konstruktors, der Methode, des Instanzinitialisierers oder des statischen Initialisierers, der die Anweisung enthält, bis zur Anweisung selbst geben muss. Bei der Analyse wird die Struktur von Anweisungen berücksichtigt.
Abgesehen von der Sonderbehandlung der Anweisungen
while
,do
undfor
, deren Bedingungsausdruck den konstanten Wert true hat, werden die Werte anderer Ausdrücke bei der Flussanalyse nicht berücksichtigt.“
Das bedeutet, dass der 'if'
-Block bei der Ermittlung von nicht erreichbarem Code nicht berücksichtigt wird. Denn wenn man durch einen der Pfade der 'if'
-Anweisung geht, könnte man zur zweiten Druckanweisung gelangen. Es hängt alles vom Compiler ab, der dies während der Kompilierungszeit feststellt.
In den anderen beiden Anweisungen hat der Compiler die Unerreichbarkeit festgestellt, so dass er sich mit einem Fehler beschwert.
Wenn wir die zweite Methode noch einmal so schreiben.
public void howToDoInJava_method2() {System.out.println("how to do");if (true) {return;}else{return;}System.out.println("in java");}
Jetzt stellt der Compiler fest, dass er auf keinen Fall die letzte Druckanweisung erreichen kann, also meldet 'javac'
auch für diese zweite Methode unerreichbaren Code.