Sto cercando di capire il polimorfismo di Java e ho una domanda su downcasting di un oggetto. Diciamo che per questo esempio ho due sottoclassi cane e gatto che ereditano da un animale superclasseCome downcast di un oggetto Java?
Da quello che ho capito, l'unico modo per downcast un oggetto è se questo oggetto è già di tipo buono, come questo:
Animal a = new Dog();
Dog d = (Dog) a;
Funziona bene?
Ma cosa succede se voglio creare un animale normale senza sapere cosa sarebbe, e quindi lanciarlo quando lo so, come posso farlo?
Animal a = new Animal();
Dog d = (Dog) a;
In questo modo verrà generata una ClassCastException in fase di esecuzione?
L'unico modo che ho trovato per farlo è quello di creare un nuovo costruttore cane che crea un cane da un animale normale:
Animal a = new Animal();
Dog d = new Dog(a);
con
public Class Dog extends Animal{
public Dog(Animal a){
super(a);
}
}
Quindi la mia domanda è: come sono Dovrei fare questo?
- Sto facendo nel modo migliore?
- Non dovrei farlo affatto, se devo farlo significa che il mio programma non è ben concepito?
- C'è un modo migliore che ho perso?
Grazie mille! nbarraille