Gast
#1430967
Object obj = (Object) new Double(1); System.out.println(obj.getClass()); Warum liefert obj.getClass() "Double" und nicht "Object", wo doch gecastet wurde?
|
Anzeige
|
JAVA: Cast Double nach Object
Gast
#1430967
Object obj = (Object) new Double(1); System.out.println(obj.getClass()); Warum liefert obj.getClass() "Double" und nicht "Object", wo doch gecastet wurde?
Gast
#1430983
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
Gast
#1431009
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 Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|