Pregunta

En Java, digamos que tiene una clase que envuelve un ArrayList (o cualquier colección) de objetos.

¿Cómo devolvería uno de esos objetos de modo que la persona que llama no vea ningún cambio futuro en el objeto realizado en ArrayList?

es decir.desea devolver una copia profunda del objeto, pero no sabe si se puede clonar.

¿Fue útil?

Solución

Convierta eso en una especificación:
-Ese objetos deben implementar una interfaz para que se permita en la colección algo así como ArrayList<ICloneable>()

Entonces puede estar seguro de que siempre realizará una copia profunda: la interfaz debe tener un método que garantice que devolverá una copia profunda.

Creo que eso es lo mejor que puedes hacer.

Otros consejos

Una opción es utilizar la serialización.Aquí hay una publicación de blog que lo explica:

http://weblogs.java.net/blog/emcmanus/archive/2007/04/cloning_java_ob.html

Supongo que es una respuesta obvia:

Haga un requisito para que las clases almacenadas en la colección sean clonables.Puede comprobarlo en el momento de la inserción o en el momento de la recuperación, lo que tenga más sentido, y lanzar una excepción.

O si el artículo no se puede clonar, simplemente vuelva a la opción de devolución por referencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top