mi sono imbattuto in un certo codice classe che implementa Clonable
, la documentazione afferma:qual è il punto nel permettere alla mia classe di implementare Cloneable?
Una classe implementa l'interfaccia Cloneable per indicare al Object.clone() che è legale per quel metodo per fare un campo- copia per campo di istanze di quella classe. Richiamando il metodo clone di Object su un'istanza che non implementa l'interfaccia Cloneable, viene generata l'eccezione CloneNotSupportedException generata. Per convenzione, le classi che implementano questa interfaccia devono eseguire l'override di Object.clone (che è protetto) con un metodo pubblico. Vedi Object.clone() per dettagli su come sovrascrivere questo metodo. Si noti che questa interfaccia non contiene il metodo clone. Pertanto, non è possibile clonare un oggetto semplicemente in virtù del fatto che implementa questa interfaccia. Anche se il metodo clone è invocato in modo riflessivo, non vi è alcuna garanzia che abbia successo.
non riesco a capire il punto nell'attuazione questa classe, come detto nella documentazione metodo .clone
non è implementato nell'interfaccia, e devo attuazione. Allora perché usare questa lezione? Perché non scriverò semplicemente un metodo copyClass
nella mia classe per eseguire la copia dell'oggetto senza l'implementazione di questa classe?
Grazie in anticipo.
La tua classe implementa Cloneable in modo da poter utilizzare i meccanismi di clonazione incorporati, in modo che altre classi possano clonare la tua senza dover conoscere i suoi metodi di clonazione univoci. Sì, è un modo un po 'strano per gestirlo, ma in parte ha a che fare con la retrocompatibilità. –