Question

En Java, disons que vous avez une classe qui encapsule un ArrayList (ou toute collection) d’objets.

Comment renverriez-vous l'un de ces objets de telle sorte que l'appelant ne verra aucune modification future apportée à l'objet effectuée dans ArrayList ?

c'est à dire.vous souhaitez renvoyer une copie complète de l'objet, mais vous ne savez pas s'il est clonable.

Était-ce utile?

La solution

Transformez cela en spécification :
-que les objets ont besoin d’implémenter une interface afin d’être autorisés dans la collection Quelque chose comme ArrayList<ICloneable>()

Ensuite, vous pouvez être assuré que vous effectuez toujours une copie complète - l'interface doit disposer d'une méthode garantissant le renvoi d'une copie complète.

Je pense que c'est le mieux que vous puissiez faire.

Autres conseils

Une option consiste à utiliser la sérialisation.Voici un article de blog l'expliquant :

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

Je suppose que c'est une réponse évidente :

Créez une condition requise pour que les classes stockées dans la collection puissent être clonées.Vous pouvez vérifier cela au moment de l'insertion ou au moment de la récupération, selon ce qui a le plus de sens, et lever une exception.

Ou si l'élément n'est pas clonable, revenez simplement à l'option de retour par référence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top