# cast von Object



## Mark2 (25. Okt 2006)

hallo,

ich weiss die frage kommt hier tausendfach vor, aber ich würde gerne nochmal klar wissen wollen, ob man tatsächlich Object nur casten kann unter expliziter angabe der klasse?

falls die frage kommt was ich denn vorhabe: ich möchte objekte in einen vector stecken, und dann wieder holen. mein problem ist, dass ich zur laufzeit nicht weiss in welche klasse ich zurückcasten muss.
meine aktuelle lösung sieht so aus, dass ich mit getClass() die klasse erfahre und irgendwie vielleicht als esc-squenz in die castklammer schreibe. 
die lösung gefällt mir aber nicht so sehr, weil mir das nicht sauber programmiert erscheint. :!:

was haltet ihr davon?  ???:L


----------



## Wildcard (25. Okt 2006)

Mark2 hat gesagt.:
			
		

> was haltet ihr davon?  ???:L


Falsches Design. Überarbeite deine Lösung.


----------



## KSG9|sebastian (26. Okt 2006)

Außerdem geht es nicht..Konstrukte wie


```
Vector x = new Vector();
x.put(a);
x.put(b);
x.put(c);

Object a = x.get(0);
z = (a.getClass())a;
```

"Dynamisches" Casten geht nicht.


----------



## SlaterB (26. Okt 2006)

Vor allem ist es auch niemals notwendig/ macht keinen Sinn.
Casten braucht man nur, um danach Operationen des gecasteten Interfaces aufzurufen. Das interessiert nur im Quellcode.
Bei unbekannten Typ könnte man logischerweise auch nix mit dem dynamisch gecasteten Objekt anfangen.

Mit der Laufzeit hat das wenig zu tun.

------

Falls man nur den Typ des Objektes testen möchte, 
was auch mit unbekannten Klassen bestimmt irgendwie Sinn machen könnte:

x.getClass().isInstance(y)


----------



## SnooP (26. Okt 2006)

x instanceof y ?


----------



## Mark2 (26. Okt 2006)

danke für eure antworten. aber anscheinend versteht ihr mich nicht. ich möchte in ein array vom typ vector (und noch lieber ein treemap) objekte unterschiedlicher klassen abspeichern. diese objekte möchte ich mit ihrem objektnamen suchen.
es mag nicht logisch klingen, weil ich ja in unbekannten objekten nicht weiss welche methoden und variablen vorkommen. ich habe aber in jedem objekt ein identisches attribut, und nur darauf werde ich zugreifen.

PS: wo kann ich denn hier ein photo unter meinen namen eintstellen? unter profil habe ich nix gefunden und unter boardregeln stand nix.


----------



## AlArenal (26. Okt 2006)

Weißt du was ein Interface ist?


----------



## André Uhres (26. Okt 2006)

Falls du wissen solltest was ein Interface ist:
Erstelle einfach ein Interface, das alle diese Klassen implementieren, dann brauchste nur den Typ vom Interface.


----------



## AlArenal (26. Okt 2006)

Falls du nicht weißt, was ein Interface ist:

Liesmich, Baby!


----------



## Mark2 (1. Nov 2006)

ok, ihr habt mich erwischt. ich bin noch kein java experte, und abstract und interface hatte ich mir bisher erspart zu lernen. :### 

ich habe jetzt rausgefunden wie man mittels interface allgemein auf jedes objekt zugreift. ist ein wenig umständlich und nicht so direkt wie ich es mir vorgestellt habe. aber man soll ja auch immer mit methoden auf variablen zugreifen...

trotzdem danke für eure hinweise   :wink:


----------

