Lokale Variable und Instanzvariable innerhalb Iterator

LILA

Aktives Mitglied
Hallo Forum,

ich habe in etwa folgenden Code:

Java:
package minimalertest;

import java.io.IOException;
import java.util.Iterator;

public class Test {

    private String servletNutzer;

    protected void processRequest(){

        try {

            String nochEinString;

            //Irgendein Code

            Iterator iter = items.iterator();
            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();
                //Normale Form-Felder und Dateneingaben sollen getrennt behandelt werden
                if (item.isFormField()) {
                    String name = item.getFieldName();
                    if (name.equals("ImportNutzer")) {servletNutzer = item.getString(); System.out.println(name + servletNutzer);}
                    nochEinString = "12";
                    //Hier meldet meine IDE keine Fehler
                    System.out.println(nochEinString);
                } else {
                }
            }

            System.out.println(servletNutzer);
            System.out.println(nochEinString);

        } finally {
        }
    }
}

Wenn ich den Iterator " Iterator iter = items.iterator();" drinnen habe, wird mir System.out.println(nochEinString); in meiner IDE mit der Fehlermeldung: "variable nochEinString might not have been initialized" gekennzeichnet.

Wenn ich sie dann initialisiere, dann wird es so geschrieben:
Java:
...try {

            String nochEinString = null;

            //Irgendein Code...

Kommentiere ich den Iterator ganz aus, will die IDE die Variable nicht mehr umbedingt initialiseren...

Woran liegt das?

Schöne Grüße
 
Weil du dann nicht mehr auf die Variable zugreifst?

Java:
public void methodA(){
    String s;
}

public void methodB(){
    String s;

    System.out.println(s);
}

Die erste Methode ist ok, die zweite kompiliert nicht.
 
Danke für die Antwort.

Ich hatte mich schlecht ausgedrückt, ich hätte gedacht, dass ich nur die Zeile mit dem Iterator auskommentiere, in etwas so:

Java:
Iterator iter = items.iterator();

Dann gibt es zwar viele andere rote Anmerkungen, aber meine Variable "nochEinString" muss nicht mehr
umbedingt initialisiert werden.
 
Weil dann andere Fehler zuerst angemeckert werden.

z.B. [c] while (iter.hasNext()) {[/c]

Dann müsste gar nicht mehr in die Schleife reingesehn werden. 😉
 
Stimmt, dass wird immer rot.

Liegt es daran, dass man lokale Varialben immer initialisiere muss, da sonst der Compiler einen Fehler meldet?

Aber ich initialisiere sie ja, nur etwas später... ?
 
Du must eine Variable bevor du drauf zugreifst initialisieren. Nicht mehr und nicht weniger 😉

Nebenbei:
Java:
		boolean b = true;
		String s;
		
		if(b){
			s = "123";
		} 
		System.out.println(s);

Geht auch nicht! Wenn b false wäre wäre s beim Sysout uninititalisiert.
 
Zuletzt bearbeitet von einem Moderator:
Ah, jetzt ist mir das ganze klar.
Meine IDE denkt mit... 🙂
Klar, eine Schleife muss ja nicht umbedingt ausgeführt werden...
Danke
Schönen Abend
 

Zurück
Oben