Casten zwischen Objecten

Allgemeine Themen rund um Java

Moderator: wegus

Antworten
Mungo1981M
Beiträge: 76
Registriert: 02.01.2013, 16:57

Casten zwischen Objecten

Beitrag von Mungo1981M » 02.02.2013, 09:59

:) Ich lese gerade noch einmal von der Möglichkeit zwischen Typen zu Casten :)
:shock: Nun stelle ich mir die Frage:
Kann ich irgendwie auch zwischen selbst erstellten Objecten Casten
Voraussetzung glaube ich ist true für IsIInstanzeOf :shock:

Benutzeravatar
Tux1000
Beiträge: 264
Registriert: 05.04.2008, 16:09

Re: Casten zwischen Objecten

Beitrag von Tux1000 » 02.02.2013, 11:14

Nicht falsch verstehen, aber manchmal werde ich irgendwie von den vielen Smilies erschlagen...

Klar kannst du zwischen verschiedenen Klassen casten, auch wenn du die Klassen erstellt hast.
Casten klappt natürlich nur, wenn die Objekte auch kompatibel zueinander sind, sie also ein gemeinsamen Interface oder eine gemeinsame Basisklasse haben, zu der gecastet werden soll.

Gruß

Mungo1981M
Beiträge: 76
Registriert: 02.01.2013, 16:57

Re: Casten zwischen Objecten

Beitrag von Mungo1981M » 06.02.2013, 15:47

Ich denk mal man müsste etwas Code schreiben, um die Daten vom einen Object zu holen
und sie im anderen Object zu speichern.

Frage: Wo muss dieser Code hin,
was muss man einfügen oder
Überschreiben.

Benutzeravatar
Tux1000
Beiträge: 264
Registriert: 05.04.2008, 16:09

Re: Casten zwischen Objecten

Beitrag von Tux1000 » 06.02.2013, 18:29

Nicht ganz.

Casten kannst du nur, wenn das zu castende Objekt bereits eine Instanz der zu castenden Klasse ist.

Ich versuche es mal mit einem Beispiel:

KlasseA ist Basisklasse von KlasseB. KlasseB ist wieder Basisklasse von KlasseC.

Jetzt wird irgendwo eine Instanz von KlasseC erzeugt (new KlasseC()....). Du bekommst diese erzeugte Instanz mit folgendem Aufruf:

Code: Alles auswählen

KlasseA meineKlasse = getKlasseA();
Damit ist meineKlasse eine KlasseA. Mehr weißt du an dieser Stelle nicht.

Jetzt kannst du prüfen, ob KlasseA eine Instanz von KlasseC (oder B) ist:

Code: Alles auswählen

if( meineKlasse instanceOf KlasseC ) {

  System.out.println( "MeineKlasse ist eine KlasseC" );
  // Hier könnte meineKlasse jetzt nach KlasseC gecastet werden
  // somit könnte man entsprechend spezialisierte Methoden von KlasseC nutzen

}
else if( meineKlasse instanceOf KlasseB ) {

  System.out.println( "MeineKlasse ist eine KlasseB );
  // Hier könnte meineKlasse jetzt nach KlasseB gecastet werden
  // hier könnte man dann nur die spezialisierten Methode der KlasseB nutzen

}
Casten funktioniert also nur, wenn das Objekt bereits eine Instanz der gewünschten Zielklasse ist. Beliebige Objekte können also nicht kreuz und quer gecastet werden.
Es kommt also immer auf den Ableitungsbaum an, ob gecastet werden kann oder nicht. Implementiert eine Klasse ein bestimmtes Interface oder erweitert eine bestimmte Klassse, kannst du in das Interface oder einer der Basisklassen casten.

Gruß

Mungo1981M
Beiträge: 76
Registriert: 02.01.2013, 16:57

Re: Casten zwischen Objecten

Beitrag von Mungo1981M » 07.02.2013, 17:50

Gut jetzt wäre klar was wohin ge-Castet werden kann.
Wie ich aber nun meineClase zu KlasseB bzw. KlasseC caste

Vielleicht in dem ich ein neues Object der KlasseB bzw. KlasseC baue und dem meine Klasse zuweise

Aber schon einmal danke, heute fällt der Euro in Cent Stücken

Antworten