Object cast int (wieder)

Siesta

Grünschnabel
hallo,

ich weiss das das casten von object in int nicht so geht. aber ich wunder mich schon sehr weshalb nicht.

ich möchte zwischen zwei objekten eine zahl austauschen. ein object soll nach dem rechnen ein int oder double an ein anderes objekt senden. das mache/versuche ich mittels Observable/Observer.
eine andere lösung habe ich schon mit interface, aber die ist mir bisher zu indirekt, genauso wie arraylist.

was ich in/an java nicht verstehe ist, wieso mit getClass() ich das object identifizieren und die zahl im object über println() ausgeben kann. aber beim casten sagt er dann das er kein object in int casten kann?

ich lese mir nen wolf. aber es muss doch eine (einfache) möglichkeit geben eine zahl zu verschicken?

vielen dank für antworten
Siesta
 
Moin!
Du kannst ein Object nicht in ein int casten, weil ein int nunmal kein Objekt ist, sondern ein Primitiv.
Code:
Object obj = 5;
geht allerdings, weil es ja immer noch die Wrapper Klassen wie Integer gibt, in der der Int Wert nun gespeichert wird. obj.getClass() würde dir hier also "Integer" liefern
Und da Java doch sehr benutzerfreundlich ist, macht es viele dieser "Wrapper Sachen" schon ganz automatisch. (Zumindest seit Java 5)Und wenn du also aus einem Object wieder den int Wert haben will, kannst du das so machen:

Code:
Object obj = 5;
int fuenf = (Integer)obj;

Wie erwähnt funktioniert das erst seit Java 5 so einfach. Das Feature nennt sich glaub ich Autoboxing.
Mt älteren Java Version geht es so:
Code:
Object obj = new Integer(5);
int fuenf = ((Integer)(obj)).intValue();

*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
danke für die antwort! :)

seltsamerweise hatte ich das mit einem wrapper ausprobiert, und hatte noch einen fehler. :rolleyes:

vielleicht war es gestern einfach zu spät...
 
Zurück