mikrocontroller.net

Forum: PC-Programmierung JAVA: Cast Double nach Object


Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Object obj = (Object) new Double(1);
System.out.println(obj.getClass());

Warum liefert obj.getClass() "Double" und nicht "Object", wo doch 
gecastet wurde?

Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.