2008-08-27 10 views
5

En Java, disons que vous avez une classe qui enveloppe ArrayList (ou n'importe quelle collection) d'objets.Copie de retour Java pour masquer les changements futurs

Comment renverriez-vous l'un de ces objets de telle sorte que l'appelant ne verra aucune modification future de l'objet créé dans ArrayList? Par exemple, vous voulez renvoyer une copie complète de l'objet, mais vous ne savez pas s'il est clonable.

Répondre

4

tour que dans une spécification:
objets -que doivent implémenter une interface afin d'être admis dans la collection Quelque chose comme ArrayList<ICloneable>()

Ensuite, vous peut être assuré que vous faites toujours une copie profonde - l'interface devrait avoir une méthode qui est garantie pour retourner une copie profonde.

Je pense que c'est ce que vous pouvez faire de mieux.

1

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

Faire une condition nécessaire pour les classes stockées dans la collection à être cloneable. Vous pouvez vérifier cela au moment de l'insertion ou au moment de la récupération, tout ce qui a plus de sens, et lancer une exception.

Si l'élément n'est pas clonable, il vous suffit de revenir à l'option de retour par référence.

Questions connexes