2008-08-27 18 views
5

En Java, supongamos que tiene una clase que ajusta un ArrayList (o cualquier colección) de objetos.copia de retorno de Java para ocultar cambios futuros

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

es decir, desea devolver una copia en profundidad del objeto, pero no sabe si es clonable.

Respuesta

4

convertir eso en una especificación:
objetos -Que tienen que implementar una interfaz con el fin de ser admitido en la colección Algo así como ArrayList<ICloneable>()

A continuación, puede estar seguro de que siempre hace una copia profunda: la interfaz debe tener un método que garantice la devolución de una copia profunda.

Creo que es lo mejor que puede hacer.

1

supongo que es una respuesta ovbious:

Hacer un requisito para las clases almacenadas en la colección de ser cloneable. Puede verificarlo al 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 elemento no es clonable, simplemente devuelve la devolución por referencia.