T
terminator1979
Gast
Hallo!
Ich habe eine ArrayList, welche verschiedene Objekte enthaelt. Diese Objekte sind Instanzen verschiedener Klassen, also die Objekte haben verschiedene Typen.
Das Fuellen der ArrayList sieht so aus:
Beim Herausholen der Objekte aus der Liste ergibt sich nun mein Problem:
Wie kann ich das Element der Liste wieder als Objekt bekommen?
Meine Idee ist es, das Element zu casten:
Abgesehen davon, dass mir das mit dem StringVergleich nicht recht gefaellt, klappt das auch nur
im "einfachen Fall", d.h. wenn meine Klasse CLASS1 keine Unterklassen besitzt.
Die Klassen CLASS1 usw. bestehen aber aus Unterklassen.
Ich kann mit meiner CastingVariante jetzt auf das Attribut "test1" zugreifen, nicht aber das Attribut "substring1",
da bekomme ich eine Fehlermeldung (NullPointerException):
Die Fehlermeldung lautet
"Exception in thread "main" java.lang.NullPointerException"
Wer kann mir sagen, wo der Fehler liegt und was ich anders machen muss, um auf meine SubClass zugreifen zu koennen?
Vielleicht gibt es ja eine andere Zuweisung, alternativ zum Casting?
Ich koennte auch mit einem anderen Loesungsansatz ohne ArrayList leben, wichtig ist aber, dass ich verschiedene Objekte verschiedener Typen habe und diese irgendwie in eine Liste packen muss, welche ich spaeter auslese.
Vielen Dank schon mal fuer eure Muehen!
Gruss,
Termi.
Ich habe eine ArrayList, welche verschiedene Objekte enthaelt. Diese Objekte sind Instanzen verschiedener Klassen, also die Objekte haben verschiedene Typen.
Das Fuellen der ArrayList sieht so aus:
Code:
private ArrayList aListe = new ArrayList();
...
aListe.add(new CLASS1());
aListe.add(new CLASS2());
aListe.add(new CLASS1());
...
Beim Herausholen der Objekte aus der Liste ergibt sich nun mein Problem:
Wie kann ich das Element der Liste wieder als Objekt bekommen?
Meine Idee ist es, das Element zu casten:
Code:
//innerhalb einer FOR-Schleife tue ich folgendes fuer jedes Element des Arrays:
String ObjectType = aListe.get(n).getClass().getName();
if (ObjectType == "CLASS1")
{
CLASS1 Object1 = (CLASS1) aListe.get(n);
}
Abgesehen davon, dass mir das mit dem StringVergleich nicht recht gefaellt, klappt das auch nur
im "einfachen Fall", d.h. wenn meine Klasse CLASS1 keine Unterklassen besitzt.
Die Klassen CLASS1 usw. bestehen aber aus Unterklassen.
Code:
public class CLASS1
{
public String test1;
public SUBCLASS1 subclass;
public class SUBCLASS1
{
public String substring1;
...
}
...
}
Ich kann mit meiner CastingVariante jetzt auf das Attribut "test1" zugreifen, nicht aber das Attribut "substring1",
da bekomme ich eine Fehlermeldung (NullPointerException):
Code:
String ObjectType = aListe.get(n).getClass().getName();
if (ObjectType == "CLASS1")
{
CLASS1 Object1 = (CLASS1) aListe.get(n);
String sBlub;
sBlub = Object1.test1;
System.out.println(sBlub);
sBlub = Object1.subclass.substring1; //FEHLERMELDUNG
System.out.println(sBlub);
}
Die Fehlermeldung lautet
"Exception in thread "main" java.lang.NullPointerException"
Wer kann mir sagen, wo der Fehler liegt und was ich anders machen muss, um auf meine SubClass zugreifen zu koennen?
Vielleicht gibt es ja eine andere Zuweisung, alternativ zum Casting?
Ich koennte auch mit einem anderen Loesungsansatz ohne ArrayList leben, wichtig ist aber, dass ich verschiedene Objekte verschiedener Typen habe und diese irgendwie in eine Liste packen muss, welche ich spaeter auslese.
Vielen Dank schon mal fuer eure Muehen!
Gruss,
Termi.