Voglio clonare un dato oggetto.Come convince il compilatore un oggetto è clonabile (java)?
se faccio questo
public class Something{
Object o; //set in the constructor
public Something(Object o){
this.o = o;}
public Something clone() throws CloneNotSupportedException{
Something temp = super.clone();
if (o instanceof Cloneable) //important part
temp.o = o.clone(); //important part
else temp.o = o;
}
}
questo non funzionerà becuase o.clone() è protetto.
se faccio questo invece
if (o instanceof Cloneable) //important part
temp.o = ((Cloneable)o).clone(); //important part
non funzionerà o perché Cloneable è un'interfaccia vuoto.
quindi come faccio a convincere il compilatore che è possibile clonare o?
@immibis, non credo che il tuo commento aggiunga molto valore all'essere onesti. – aioobe
È necessario rendere la classe implementare 'Cloneable' e implementare il metodo' clone'. – Rishav
Da doc: "Una classe implementa l'interfaccia Cloneable per indicare al metodo Object.clone() che è legale per quel metodo eseguire una copia field-for-field delle istanze di quella classe." – Rishav