Class Casting

Hallo zusammen,

eine Frage:
Kann ich jede beliebige Klasse in eine andere Casten?
Was sind die Randbedingungen?

Danke
Herbert

Ich vergass
Kann ich auch Enums casten und wenn ja wie und mit welchen Vorbedingungen?

Danke
Herbert

Enumerationen gibt es in Java doch garnicht als Typ? Oder habe ich das falsch in Erinnerung?
Beim Casten von Klassen gilt folgendes:

  1. Man kann im Code jede Klasse in jede andere casten.
    1b. Das muss aber nicht immer von Erfolg gekrönt sein.

  2. Man kann jede Klasse auf ihre direkte und indirekten Basisklassen casten.

  3. Man kann jede Klasse nach Object casten, weil jede Klasse (mindestens indirekt) von Object erbt.

  4. Man kann Basisklassenvariablen in ihren eigentlichen Typ casten:

    BaseClass b = new DerivedClass();
    DerivedClass d = (DerivedClass) b; // In eigtl. Typ casten
    // ACHTUNG: Kann fehlschlagen, z. B. so:
    BaseClass b = new DerivedClass1();
    DerivedClass2 d = (DerivedClass2) b; // b ist Instanz von Typ 1, wird aber zu Typ 2 gecastet -> schlägt fehl, weil DerivedClass1 keine Basisklasse von DerivedClass2 ist

Grüße, JasonDelife.

Hi,

enum gibts in Java, siehe http://java.sun.com/docs/books/tutorial/java/javaOO/…

Cheers,
Herb