Die methode hat ein RuntimeException (NullPointerException),das wert von values is null,und wenn man auf null zugreift bekommt man diesen error.
Jetzt ist die Frage was ist der unterschied zwischen den Fehler dieser methode, und eine methode (die uns nicht gegeben ist,und wir darfen sie auch nicht schreiben) die in eine Methode mit einer lokalen Variable eine Objektreferenz speichert, und einem if-Statement. In einem Zweig wird die Variable mit einem Wert initialisert. Im anderen Zweig wird der Variable kein Wert zuzuweisen. An einer späteren Stelle greifen Sie auf die Variable zu. Was ist der unterschied zwischen den fehler von diesen 2 methoden.
Bei lokalen Methodenvariablen stellt bereits der Compiler zur Compilezeit sicher, dass alle lokalen Variablen auch in jedem Codepfad initialisiert/geschrieben sind, bevor sie gelesen werden. Du kannst also in Java keine Methode schreiben, die in einem Kontrollflusspfad die lokale Variable initialisiert und in einem anderen Pfad nicht, wenn du später die Variable liest.
Letztlich kannst du aber natürlich auch bei lokalen Methodenvariablen auch zur Laufzeit eine NPE bekommen, nämlich, wenn du die Variable mit null initialisierst.
Das ist bei Instanzvariablen der Default.
Oder anders gesagt: Instanzvariablen und Klassenvariablen haben einen Defaultwert (null, 0, 0.0f), lokale Methodenvariablen nicht.
Bei lokalen Methodenvariablen stellt bereits der Compiler zur Compilezeit sicher, dass alle lokalen Variablen auch in jedem Codepfad initialisiert/geschrieben sind, bevor sie gelesen werden. Du kannst also in Java keine Methode schreiben, die in einem Kontrollflusspfad die lokale Variable initialisiert und in einem anderen Pfad nicht, wenn du später die Variable liest.
Letztlich kannst du aber natürlich auch bei lokalen Methodenvariablen auch zur Laufzeit eine NPE bekommen, nämlich, wenn du die Variable mit null initialisierst.
Das ist bei Instanzvariablen der Default.
Oder anders gesagt: Instanzvariablen und Klassenvariablen haben einen Defaultwert (null, 0, 0.0f), lokale Methodenvariablen nicht.
Ok wenn ich dich richtig verstanden habe kann ich nicht "übersehen" in einem Zweig die Variable zu initialisren und in anderen nicht? Wenn du dass gemeint hast was für ein Fehler wäre dass?
Ein Compilefehler. Fehler kann man generell zur Übersetzungszeit (Compilezeit, Kompilierungszeit) oder zur Laufzeit (wenn das Programm läuft) haben. Dein Beispiel aus dem ersten Post war ein Laufzeitfehler. Das Beispiel hier ist dann wohl ein Compilefehler/Kompilierungsfehler bzw. "Fehler während der Compilierung/Kompilierung".
Ein Compilefehler. Fehler kann man generell zur Übersetzungszeit (Compilezeit, Kompilierungszeit) oder zur Laufzeit (wenn das Programm läuft) haben. Dein Beispiel aus dem ersten Post war ein Laufzeitfehler. Das Beispiel hier ist dann wohl ein Compilefehler/Kompilierungsfehler bzw. "Fehler während der Compilierung/Kompilierung".