casten von Objekten aus einer ArrayList

Status
Nicht offen für weitere Antworten.
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:
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.
 

Evolver

Bekanntes Mitglied
ICh hoffe ich habe nichts überlesen, aber warum benutzt du für die Objekte, die du aus der Liste holst, nciht instanceof, um sie je nach Typ dann richtig zu casten?
 

ms

Top Contributor
Die NullPointerException sagt aus, dass subclass null ist. Hat also nichts mit einem Casting-Problem zu tun.

Abgesehen davon:
- Subclass, so wie du es verwendest und benannt hast, ist keine Sub-Klasse im Sinne von Vererbung.
- Klassenvariablen sollten private sein und nur über Getter und Setter-Methoden verfügbar sein.
- Für die Benennung von Variablen und Klassen gibt es Java-Code-Conventions.
- Strings werden mit .equals(...) verglichen.

@Evolver
Hab ich mir beim ersten mal durchlesen auch gedacht.

ms
 
M

maki

Gast
Benutze ein gemeinsames Interface für CLASS1 und CLASS2, dann brauchst du nur noch auf dieses eine Interface zu casten, und zwar immer.
Wenn du dann noch Java 5 oder höher einsetzt, kannst du dir so den Cast ganz sparen :)
 
T

ter

Gast
Hallo!

Danke fuer eure Antworten.
Das Problem lag (wie meistens) zwischen Monitor und Stuhl. Ich habe die Klassen falsch definiert, deswegen gab es an dieser Stelle keine Objekte zum zugreifen, und daher auch die NullPointerException.

Evolver hat gesagt.:
ICh hoffe ich habe nichts überlesen, aber warum benutzt du für die Objekte, die du aus der Liste holst, nciht instanceof, um sie je nach Typ dann richtig zu casten?
Also ich caste jetzt so:
Code:
if (aListe.get(n) instanceof CLASS1)
{
   ...
}

ms hat gesagt.:
Die NullPointerException sagt aus, dass subclass null ist. Hat also nichts mit einem Casting-Problem zu tun.
Der Fehler liegt bereits beim Erzeugen der Objekte bzw. in meiner Klassendefinition.
Das Casten funktioniert also prinzipiell.


ms hat gesagt.:
Abgesehen davon:
- Subclass, so wie du es verwendest und benannt hast, ist keine Sub-Klasse im Sinne von Vererbung.
Daher kam auch mein Fehler, dass ich das falsch benutzt habe.


ms hat gesagt.:
- Klassenvariablen sollten private sein und nur über Getter und Setter-Methoden verfügbar sein.
Da hast du natuerlich recht, ich wollte auch kein verkaufsfertiges Programm posten, sondern lediglich das Prinzip meines Problems schildern. Dabei erschien mir das angeben von Gettern und Settern an der Stelle ueberfluessig.

ms hat gesagt.:
- Für die Benennung von Variablen und Klassen gibt es Java-Code-Conventions.
- Strings werden mit .equals(...) verglichen.
Wieder hast du recht. Ich arbeite mich gerade in Java ein. Entschuldigung also fuer die Nichteinhaltung der Conventions.

Danke und Gruss,
Termi.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Baldur Datentypen Unnötiges Casten in Templatecode? Allgemeine Java-Themen 4
X Datentypen Byte geht nicht höher als 126 auch nicht mit casten? Allgemeine Java-Themen 22
F Klassen Casten Allgemeine Java-Themen 2
W Datentypen Datentyp "Number" casten? Allgemeine Java-Themen 5
J byte - hex - byte.. casten Allgemeine Java-Themen 8
N Casten durch generic vermeiden ?? Allgemeine Java-Themen 10
M Casten von Liste nach Array schlägt fehl?? Allgemeine Java-Themen 3
S Type safety Warnings beim casten von Generics Allgemeine Java-Themen 6
B Pattern gesucht, Programm Optionen, Casten vermeiden Allgemeine Java-Themen 3
C casten vom Typ Object nach Double[][] Allgemeine Java-Themen 2
J Casten ueber generischen Parameter? Allgemeine Java-Themen 5
Q Typen von Generics & Casten Allgemeine Java-Themen 3
M Andere Möglichkeit zu casten Allgemeine Java-Themen 8
G Objekte automatisch casten Allgemeine Java-Themen 10
M wie casten ? Allgemeine Java-Themen 7
F Welcher Datentyp in welchen casten? Allgemeine Java-Themen 11
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
D toArray() bei ArrayList casten Allgemeine Java-Themen 10
N treenode casten? Allgemeine Java-Themen 2
R object zu array casten. Allgemeine Java-Themen 2
S Dynamisches Casten Allgemeine Java-Themen 5
D Object in int casten Allgemeine Java-Themen 7
D Optimierung beim Casten Allgemeine Java-Themen 4
P Dynamisch casten - möglich? wie? Allgemeine Java-Themen 5
S Compliance 5.0 prob: HashMap von obj casten Allgemeine Java-Themen 3
M Typkonvertierung und Casten? Allgemeine Java-Themen 6
M Object in HashMap casten Allgemeine Java-Themen 4
C Reflection und variable casten ! Allgemeine Java-Themen 10
K Klasse dynamisch casten Allgemeine Java-Themen 14
S ClassCastException beim Casten in eine Klasse Allgemeine Java-Themen 7
B OOP Kommunikation zwischen Objekten? Allgemeine Java-Themen 5
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
B Sent and Receive Funktionen zwischen Objekten ermöglichen? Allgemeine Java-Themen 8
A Objekt aus anderen Objekten machen Allgemeine Java-Themen 8
PCOmega137 Objekten zufällig erzeugte Namen geben Allgemeine Java-Themen 2
T Speichern von Objekten Allgemeine Java-Themen 2
D Serialisierung und Deserialisierung von Objekten - Frageprogramm Allgemeine Java-Themen 4
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
M loeschen von objekten Allgemeine Java-Themen 22
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
F Best Practice Große Anzahl an Objekten speichern und lesen Allgemeine Java-Themen 19
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
K Vergleich von Strings von Objekten Allgemeine Java-Themen 4
B Endlosschleife beim Verteilen von Objekten Allgemeine Java-Themen 4
L Von ArrayList abgeleitete Klasse nur mit bestimmten Objekten füllen Allgemeine Java-Themen 1
D Verwaltung von sehr vielen Objekten Allgemeine Java-Themen 12
G problem: array aus objekten Allgemeine Java-Themen 10
H Liste von Objekten generisch sortieren Allgemeine Java-Themen 0
S Zur Laufzeit Klasse mit einer anzahl von X Objekten erstellen Allgemeine Java-Themen 5
B OOP Auf Zustandsänderungen von Objekten reagieren Allgemeine Java-Themen 2
H Best Practice zu vielen konstanten Objekten? Allgemeine Java-Themen 10
M 3D-Grafik Probleme beim drehen von Objekten Allgemeine Java-Themen 9
A Sinnvolles Software Design bei Eigenschaftsänderungen von Objekten Allgemeine Java-Themen 7
J Java-Implementierung diverser Beziehungen zwischen Klassen bzw. Objekten Allgemeine Java-Themen 2
S Threads Liste mit Objekten in Teillisten zerlegen und abarbeiten Allgemeine Java-Themen 3
P J-Unit vergleich von 2 Objekten merkwürdig Allgemeine Java-Themen 7
Landei Guice - Injection von "zwischendurch" erzeugten Objekten Allgemeine Java-Themen 4
S Sortieren nach Objekten Allgemeine Java-Themen 13
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
D Von mehreren Objekten eine Eigenschaft abfragen Allgemeine Java-Themen 11
G Array mit neuen Objekten der selben Klasse füllen Allgemeine Java-Themen 2
S Eine Collection von Objekten mit LDAP Syntax filtern Allgemeine Java-Themen 5
M Schnittmenge von Objekten Allgemeine Java-Themen 3
N Performates lesen von Objekten aus Dateien Allgemeine Java-Themen 2
hdi Speichergröße von Objekten & Referenzen Allgemeine Java-Themen 8
hdi JTable: Sortierung von Date-Objekten Allgemeine Java-Themen 4
C ArrayList (mit Objekten) sortieren Allgemeine Java-Themen 12
C TreeSet mit Objekten befüllen Allgemeine Java-Themen 12
L Lesen von Objekten aus Datei Allgemeine Java-Themen 17
S Liste mit verschiedenden Objekten Allgemeine Java-Themen 15
I Vector mit Objekten sortieren,Videos mit JMF wiedergeben Allgemeine Java-Themen 6
J ArrayList aus Point-Objekten nach dem x-Wert ordnen Allgemeine Java-Themen 2
T abspeichern und laden von objekten in JFrame Allgemeine Java-Themen 2
G Serialisieren von Objekten : IO Exception beim Schreiben Allgemeine Java-Themen 3
G Kompletten Frame mit allen Objekten resizen Allgemeine Java-Themen 10
G Tagesdifferenz zw. 2 Gregorian Objekten Allgemeine Java-Themen 14
M Endgültiges Löschen von Objekten Allgemeine Java-Themen 7
M Problem mit Objekten Allgemeine Java-Themen 11
B Serialisieren von mehreren Objekten Allgemeine Java-Themen 7
W Threads & Pipes --> Ist eine Übergabe von Objekten mö Allgemeine Java-Themen 7
O kommunikation zw. objekten Allgemeine Java-Themen 7
G List mit selbstdefinierten Objekten sortieren Allgemeine Java-Themen 2
T Unabhängigkeit von Variablen/ Objekten. Allgemeine Java-Themen 6
M String aus array mit Objekten suchen Allgemeine Java-Themen 26
F Array von Objekten Allgemeine Java-Themen 2
B Darstellung von Objekten dauern unterschiedlich lang ! Allgemeine Java-Themen 5
G hashtable mit objekten Allgemeine Java-Themen 9
G Probleme mit Clonen von Objekten die JComponents enthalten Allgemeine Java-Themen 3
M Alle möglichen Kombinationen von mehreren Objekten berechnen Allgemeine Java-Themen 6
D OOP-Style bei Objekten Allgemeine Java-Themen 35
H Speicher freigeben klappt nicht bei Image Objekten, warum? Allgemeine Java-Themen 8
m@nu Programm-Models in Static-Objekten speichern Allgemeine Java-Themen 5
T Problem mit Zuweisung von Objekten Allgemeine Java-Themen 5
K Ordner/Dateistruktur in Objekten nachbilden Allgemeine Java-Themen 6
C Uebergabe von Objekten nach anklicken von JCheckBox Allgemeine Java-Themen 5
B Array von Objekten Allgemeine Java-Themen 3
W Mit Date-Objekten arbeiten Allgemeine Java-Themen 10
C Sichbarkeit von Objekten / Methoden in verschiedenen Files Allgemeine Java-Themen 7
S Sortieren Von Objekten Nach Attribut Allgemeine Java-Themen 6
lhein Übergabe von Objekten von Java an C über JNI Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben