# Objekte im Array speichern und auf den Inhalt zugreifen ?



## Pagmi (25. Mai 2010)

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 ??


----------



## eRaaaa (25. Mai 2010)

Pagmi hat gesagt.:


> 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)


----------



## Gast2 (25. Mai 2010)

Pagmi hat gesagt.:


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


Nicht ganz. Es wird automatisch die toString methode de Objects aufgerufen:

```
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:


```
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>.


----------



## Michael... (25. Mai 2010)

entweder das was arrayname [PositionX] liefert in den konkreten Typ casten
oder gleich ein konkretes Array erzeugen:

```
Klassename[] arrayname = new Klassename[...];
```


----------



## Pagmi (25. Mai 2010)

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 !


----------

