Objekte im Array speichern und auf den Inhalt zugreifen ?

Pagmi

Neues Mitglied
Grüße ans Forum !

Bin Java-Anfänger und habe Schwierigkeiten mit Objekten im Array.

Ich erzeuge ein Objekt und speicher es in einem Array. Jetzt will ich über das Array auf den Inhalt des Objektes (z.B die Methoden oder Variablen) zugreifen aber wie ??

so bin ich vorgegangen in meiner Main-methode:

Object [] arrayname = new Object [arraygröße] // Array wird angelegt
Klassename objektname = new Klassenname (); // eigenes Objekt wird erzeugt
arrayname [PositionX]= (Object) objektname; // mein Objekt wird im Array an PositionX gespeichert.

System.out.println (arrayname [PositionX]) ; // ich bekomme eine Speicheradresse als Ausgabe !

was muss ich jetzt schreiben, um als Ausgabe z.B eine Variable im Objekt zu bekommen ? (public)
ich dachte vielleicht, es würde mit arrayname [PositionX]. irgendwie gehen ??
 
so bin ich vorgegangen in meiner Main-methode:
Object [] arrayname = new Object [arraygröße] // Array wird angelegt
Object [] => Klassenname[]
System.out.println (arrayname [PositionX]) ; // ich bekomme eine Speicheradresse als Ausgabe !
Jepp, du müsstest die toString-Methode überschreiben
was muss ich jetzt schreiben, um als Ausgabe z.B eine Variable im Objekt zu bekommen ? (public)
ich dachte vielleicht, es würde mit arrayname [PositionX]. irgendwie gehen ??
tuts auch, wenn du eben nicht ein allgemeines Object-Array benutzt, sondern wie oben schon angemerkt ein Array mit konkreten "Klassennamen"-Instanzen ...(ansonsten müsstest du halt casten)
 
System.out.println (arrayname [PositionX]) ; // ich bekomme eine Speicheradresse als Ausgabe !
Nicht ganz. Es wird automatisch die toString methode de Objects aufgerufen:
Java:
    public String toString() {
	return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
Um die Ausgabe zu ändern kannst du in deinem eigenen Objekt einfach die toString() Methode von Object überschreiben.

Um auf Methoden und/oder Variablen zuzugreifen musst du zuerst wieder zurück auf Klassenname casten:

Java:
Klassenname meinObjekt = (Klassenname)arrayname [PositionX];
Vorher evtl. noch Prüfen ob es sich wirklich um ein Objekt vom Typ Klassenname handelt (instanceof), da ja jedes mögliche Object ins Array darf.
Auf meinObjekt kannst du dann wie gewohnt deine Methode aufrufen.

PS:
Nimm für soetwas lieber generics her. z.b. eine List<Klassenname>.
 
entweder das was arrayname [PositionX] liefert in den konkreten Typ casten
oder gleich ein konkretes Array erzeugen:
Java:
Klassename[] arrayname = new Klassename[...];
 
Vielen Dank ! jetzt funktioniert alles und ich kann endlich meine Aufgaben fertig programmieren. Habe die Frage auch an 2 weitere Leute gerichtet (darunter ein Informatikprofessor) und habe nur unbrauchbare Antworten bekommen - aber hier wird einem das schon nach so kurzer Zeit verständlich erklärt und dafür ein dickes Lob !
 

Neue Themen


Zurück
Oben