Problem mit static-Variable

lodee

Grünschnabel
ich habe ein Programm das die Hauptklasse Sitzordnungsplaner besitzt.

Code:
public class Sitzordnungsplaner 
{
    public static PersonenData[]    namensliste;              
    public static MainFrame         hauptfenster = null;
     
    public static void main(String[] args) 
    {       
            MainFrame fenster = new MainFrame();
            hauptfenster = fenster;
            fenster.setVisible(true);
            fenster.setSize(600, 400);
    }

wenn ich jetzt folgendes in der Klasse MainFrame mache:

Code:
Sitzordnungsplaner.namensliste = new PersonenData[5];
        System.out.println(Sitzordnungsplaner.namensliste.length);
        System.out.println(Sitzordnungsplaner.namensliste[2].getName());

bekomme ich an der 3. Zeile eine NullPointerException:

Exception in thread "main" java.lang.NullPointerException
at gui_elemente.MainFrame.<init>(MainFrame.java:145)
at hauptpackage.Sitzordnungsplaner.main(Sitzordnungsplaner.java:27)

length liefert noch den korrekten Wert: 5

zu Testzwecken habe ich in der Klasse PersonenData im Konstruktor die Werte vorbelegt.

Hier nochmal die Klasse PersonenData (ohne Setter und Setter - sollte klar sein)
Code:
public class PersonenData
{
    private String name;
    private String vorname;
    private String matrikel;
    private ImageIcon bild;
    private boolean is_sehbehindert;
    private boolean is_rollstuhl;
    
    private static int anzahl = 0;
    
    public PersonenData()
    {
        this.name               = "Person " + ++anzahl;
        this.vorname            = "Vorname "+ anzahl;
        this.matrikel           = "";
        this.bild               = new ImageIcon();
        this.is_sehbehindert    = false;
        this.is_rollstuhl       = false;
    }
//Hier kommen dann die Getter und Setter
}

Ich weiss nicht, warum er mir die Exception bringt. Eigentlich hab ich die Variable korrekt initialisiert. Auch wenn ich den Setter aufrufe kommt dieser Fehler.
Komme einfach nicht mehr alleine weiter! :confused:
 
Naja, du erzeugst einen Array vom Typ Personendata mit der Länge 5. So weit so gut. ABER: die einzelnen Felder im Array werden nicht initialisiert.
D.h. Sitzordnungsplaner.namensliste[0] bis Sitzordnungsplaner.namensliste[4] haben immernoch den Wert null und deswegen bekommst du die Exception. Du müsstest wirklich eine Schleife bauen, in der du für jedes einzelne Feld des Arrays ein neues Objekt erzeugst und zuweist.
 
Zurück