für jede Schleife kann Objekte in Array nicht initialisieren [duplizieren]

8

Ich werde schnell zu dem Problem tauchen. Ich habe eine einfache Klasse

%Vor%

und eine andere Klasse hat ein Array dieser Objekte als Member

%Vor%

Ich initialisiere es so:

%Vor%

Aber wenn ich versuche, auf die Mitglieder dieser Objekte in diesem Array zuzugreifen, bekomme ich eine NullPointerException direkt auf meine Stack-Trace. Das heißt, Objekte des Arrays wurden nicht konstruiert. Auf der anderen Seite funktioniert dieser traditionellere Code einfach perfekt:

%Vor%

Wie diese Diskussion darauf hinweist, sollten beide dies tun sei nach der Kompilation gleich.

Meine Frage ist, warum für jede Schleife das Initialisieren / Konstruieren von Objekten aus dem Elementarray fehlschlägt?

    
mehmetminanc 04.09.2012, 01:30
quelle

3 Antworten

5

In Ihrem for-each-Beispiel überschreiben Sie die lokale Variable der Schleife, die nicht in das Array zurückgespeichert wird. Es ist ähnlich wie in Ihrer zweiten Schleife:

%Vor%

Lesen Sie Verständnis für jede Schleife in Java , um das gleiche Problem zu lösen .

    
n00begon 04.09.2012, 01:32
quelle
5

Beide Schleifen sind für den Zugriff auf Elemente aus einem Array gleich, aber nicht für deren Initialisierung. Wenn Sie in diesem Szenario eine for-each-Schleife verwenden, ist das wie

%Vor%

Sie weisen dem Array nicht das neue Vector zu, sondern ordnen es stattdessen einer lokalen Variablen zu.

    
Jeffrey 04.09.2012 01:34
quelle
2

In Ihrem ersten Beispiel ist v nur innerhalb der for-Schleife verfügbar. Wenn Sie v = new Vector(); v ist aktualisiert, aber nicht Puffer [i]. v zeigte vorher auf [i], jetzt zeigt es auf einen neuen Vektor, buffer[i] bleibt als null übrig.

    
fastcodejava 04.09.2012 01:49
quelle

Tags und Links