In Java, per rendere una classe clonabile, è necessario implementare l'interfaccia Cloneable
. Implementare questa interfaccia, è solo per dire che questa classe supporta la clonazione.Perché le classi in Java non sono clonabili per impostazione predefinita
Ma quale è il motivo dei progettisti di linguaggio Java per non aver fatto "permesso di clonare" come funzionalità predefinita di ogni classe?
L'implementazione predefinita per copia superficiale è già presente. Allora perché questa restrizione?
La domanda è se il linguaggio fornisce un meccanismo predefinito per la copia superficiale, quindi perché non consentire l'utilizzo così com'è? Perché un ulteriore passaggio per implementare Clonable? –
Come ho detto, perché questo imporrà questo metodo sul contratto di ogni singolo oggetto Java, e la copia superficiale predefinita ** interromperà gli invarianti di classe ** della maggior parte delle classi Java. Ciò significa che la classe sarebbe costretta a implementare contro la sua volontà. Alcuni oggetti non sono neppure teoricamente clonealbili. Pensa al pattern * Singleton * per un momento. –