Estoy tratando de hacer una copia profunda de un objeto, incluida una instancia GregorianCalendar
. Siempre tengo cuidado con el uso de clone()
y no parece haber sido anulado aquí, así que solo estoy haciendo el campo de copiado por campo. Idealmente, no habría un constructor de copia, que podría utilizar de este modo:Forma más rápida de clonar un calendario Gregorian?
GregorianCalendar newCalendar = new GregorianCalendar(oldCalendar);
Lamentablemente no puedo encontrar ninguna dicha funcionalidad en el API y estoy atascado tratando de averiguar qué campos que necesito para obtener una copia exacta. Entonces, para hacer una copia de uno de estos calendarios, ¿cómo lo harías? ¿Me falta algún atajo simple aquí?
que no era del todo claro por qué estoy evitando 'clon()'. En este caso, estoy siguiendo los consejos de Joshua Bloch para hacer copias defensivas. Como clone() podría estar llamando a un método de clonación de subclase(), podría terminar con una copia no limpia. Un poco académico en mi caso, pero es por eso que lo estaba evitando. – wds
como dije, los datos en el Calendario no se ven afectados por este problema, todos sus datos son primitivos. Y el método de clonación en 'Calendar' funciona bien. – Bozho
Su punto es que podría concebiblemente crear una subclase que mantenga una referencia a la instancia de calendario original y mantenga esa referencia a su alrededor. Si, por ejemplo, todos los establecedores establecerían valores en la instancia original en lugar de la nueva, su copia "profunda" ahora se verá comprometida. – wds