Es demasiado tarde para cambiar la pregunta, pero más preciso habría sido preguntar "¿Por qué clone() no permite singletons?". Un método copy()
sería más conveniente.¿Por qué las enumeraciones de Java no son clonables?
¿Hay alguna razón por la cual las enumeraciones en Java no se pueden clonar?
El manual indica que
Esto garantiza que las enumeraciones no son clonados, que es necesario para preservar su estado "Singleton".
Pero devolver la instancia también también conservaría su estado, y podría manejar enumeraciones asociadas de la misma forma que otros objetos clonable.
Se podría argumentar que
La intención general [del clon()] es que, para cualquier objeto x, la expresión:
x.clone() != x
será cierto, [...]
Pero para los singleton, por el contrario, quiero que x.clone() == x
sea cierto. Si la instancia en sí misma fuera devuelta, entonces el patrón singleton sería transparente para los objetos de referencia.
¿Por qué las enumeraciones no pueden clonarse o se olvidaron de pensar en singletons e inmutables, cuando se especificó clone()
?
Con enumeraciones, ¿qué hay para clonar? – omerkudat