Hallo zusammen,
ich möchte mir Informationen aus einem String abspeichern und bequem wieder abrufen können. Dazu habe ich mir als Container eine einfache Klasse mit get- und set-Methoden geschrieben, die die Infos aufnehmen soll. Ich speichere jetzt in einer for-Schleife die Infos aus dem String ab und will sie in einem Array der Container-Klasse speichern. Das sieht dann ungefähr so aus:
Allerdings bekomme ich eine Null Pointer Exception ab der Zeile mit Box.setDies("bla");
Ich verstehe das nicht ganz, denn ich habe das Array doch richtig angelegt und initialisiert. Eine Möglichkeit ist die Variablen und Methoden in LogInfoContainer als static zu deklarieren, aber ganz sauber ist das wohl nicht, denn ich bekomme dann die Warnung Accessing static Method setDies, etc. da ja Box ein Objekt ist. Weiterhin möchte ich die LogInfoContainer-Objekte nicht in einer Array-List speichern, da ich große Dateien habe und mit dem Heap haushalten muss.
Kann mir jemand sagen, warum ich die exception bekomme und was ich machen kann?
Schönen Dank schonmal
Albrecht
stell dir vor du hättest in der Klasse LogInfoContainer nur einen Konstruktor
public LogInfoContainer(int preis) {
}
soll sich das Array dann die Parameter ausdenken beim Erstellen lauter LogInfoContainer-Objekte?
nein, das Array ist leer, enthält nur null-Variablen, du musst es selber noch mit Objekten befüllen
also, so wie ich das sehe, weißt du den verschiedenen Array-Inhalten (Box[0]...Box[irgendeineLänge-1]) keine wirklichen Objekte zu.
Bisher sagst du mit
nur, dass jede Box auf ein LogInfoContainer verweist.
Box verweist also nicht auf ein existierendes LogInfoContainer-Objekt. Daher bekommst du eine NullPointer-Exception (noch verweist jedes Array-Element auf "null").
Ändern könntest du dies, indem du zum Beispiel ein neues LogInfoContainer Objekt erzeugst und Box zuweist.
Oh Mann! Ihr habt recht!!! Hätte ich eigentlich auch drauf kommen können. Die Container bleiben ja Objekte auch nachdem man eine Array aus ihnen erstellt hat. Insofern muss jedes einzelne Objekt initialisiert werden und nicht nur das Array.
Danke euch!
Albrecht