E 'troppo tardi per cambiare la domanda, ma più precisa sarebbe stata quella di chiedere: "Perché il clone() non consentono single?". Un metodo copy()
sarebbe più conveniente.Perché Java enumerazioni non clonabile?
C'è qualche motivo per cui le enumerazioni in Java non possono essere clonati?
Il manuale che
Questo garantisce che le enumerazioni non sono mai clonati, che è necessario per preservare il loro status "Singleton".
Ma restituire l'istanza stessa preserverebbe anche il suo stato e sarei in grado di gestire enumerazioni associate allo stesso modo degli altri oggetti clonabili.
Si potrebbe obiettare che
L'intento generale [del clone()] è che, per qualsiasi oggetto x, l'espressione:
x.clone() != x
sarà vero, [...]
Ma per single, al contrario, voglio x.clone() == x
per essere vero. Se l'istanza stessa fosse restituita, allora il modello singleton sarebbe trasparente agli oggetti di riferimento.
Quindi perché non è possibile clonare le enumerazioni o si è dimenticato di pensare a singleton e immutables, quando è stato specificato clone()
?
Con le enumerazioni, cosa c'è da clonare? – omerkudat