Hinweis: Ich bin mir bewusst, dass die Initialisierung das Problem behebt; Ich nahm einfach an, dass der Compiler dem Ausführungspfad folgen würde und sah, dass foo tatsächlich an dem Punkt initialisiert wurde, an dem es andeutete, dass es nicht sein könnte.Unerwartete Verhalten mit Java-Initialisierung
Meine ursprüngliche Annahme wäre, dass, wenn die Länge nie über 3 war, ich nie Speicher für die Verwendung reservieren müsste.
Das wird nie in der Produktion eingesetzt werden, bin ich einfach nur neugierig
das folgende Beispiel zeigt: -
List<String> foo;
int length = 5;
if (length > 3)
{
foo = new ArrayList<String>();
}
if (length > 4)
{
foo.add("bar");
}
Warum dies angezeigt, die folgenden werden verursacht?
Die lokale Variable foo nicht
initialisiert wurden
Sicherlich die Zweige folgen, gibt es nie einen Fall, wobei foo nicht initialisiert wird. Ich weiß, dass, wenn ich tun waren: -
List<String> foo = null;
gäbe es keine Kompilierung Probleme sein, aber warum muss ich das tun?
@Down Voter, könnten Sie zumindest einen Grund angeben? – chrisw