Object obj = (Object) new Double(1); System.out.println(obj.getClass()); Warum liefert obj.getClass() "Double" und nicht "Object", wo doch gecastet wurde?
Noch eine Frage nebenbei: Das Casten geht in der Hierarchie nur nach unten, oder? Also kann man Object in jeden Typ unwandeln, aber niemals umgekehrt?
Maxim schrieb: > Object obj = (Object) new Double(1); > System.out.println(obj.getClass()); > > Warum liefert obj.getClass() "Double" und nicht "Object", wo doch > gecastet wurde? 1. In diesem Fall brauchst Du nicht casten 2. getClass() liefert die Run Time Type Information, in diesem Fall Double
Maxim schrieb: > Noch eine Frage nebenbei: Das Casten geht in der Hierarchie nur nach > unten, oder? Also kann man Object in jeden Typ unwandeln, aber niemals > umgekehrt? Warum machst Du ueberhaupt soviele unnoetige casts, die noch dazu das Typensystem komplett aushebeln. Vielleicht verraetst Du mir mal, was Du ueberhaupt vor hast? Michael
Mit deinem "Cast" wandelst du (anders als bei Primitivtypen) keinen Typ um. Du sicherst dem Compiler lediglich zu, dass Object obj zur Laufzeit eine Referenz vom Typ Object zugewiesen wird. Da aber in Java alle Objekte implizit von Object erben, ist dieser Cast wenig sinnvoll. obj.getClass() liefert immer den am weitesten spezialisierten Typ und das ist in diesem Fall Double. -> siehe "Liskovsches Substitutionsprinzip" Grundsätzlich gilt: Man kann Objekte eines Typs nicht in Objekte eines anderen via Cast umwandeln!!! Für weitergehende Fragen zu diese Thematik kann ich dir nur wärmstens de.comp.lang.java empfehlen. Viele Grüße Andreas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.