Diciamo che Class B
estende class A
e class A
è Cloneable come segue:Java - abbattuti nel clone
public class A implements Cloneable {
public Object clone() throws CloneNotSupportedException {
A ac = (A) super.clone();
return ac;
}
}
public class B extends A {
public Object clone() throws CloneNotSupportedException {
B a = (B) super.clone();
return a;
}
}
Perché è legale per eseguire abbattuto da A a B nella riga successiva:
B a = (B) super.clone(); // (super of B is A)
mentre il prossimo down cast è un errore in fase di esecuzione?
A a = new A();
B b = (B) a.clone();
Grazie in anticipo!
Vuoi dire 'B b = new B();' e 'A a = (A) b.clone();' per caso? – blalasaadri
Ottima domanda su clone(), era una cosa che non riuscivo nemmeno a capire. – raiks