J'ai récemment découvert l'utilité des objets immuables et que, par exemple, si vous passez des éléments à un constructeur et que votre classe doit être immuable, vous devez copier ces éléments s'ils ne sont pas immuables eux-mêmes.
Cela nécessite beaucoup de vérification ou de connaissances sur mon projet, car si j'ai
public A(B foo)
et B
n'est pas immuable, A
je dois copier B
. Imaginez maintenant B
semble immuable, mais lui-même a des classes mutables dans le constructeur et ainsi de suite.
Existe-t-il une norme ou une meilleure pratique pour documenter si une classe est immuable en Java? Il semble qu'il n'y ait pas de @immutable
mot-clé dans Javadoc.
L' annotation @Immutable semble être quelque chose de totalement différent pour la génération de classe automatique et ne fait pas partie de Java standard.
la source
Réponses:
En regardant la documentation de la
String
classe (le texte en gras est quelque chose que j'ai fait):Comme vous pouvez le voir, il n'y a pas d'étiquetage particulier ou d'autres marqueurs, cependant, ils spécifient dans le JavaDoc décrivant la classe que la
String
classe représente un objet constant et immuable.Ainsi, en supposant que vous avez suivi les instructions fournies dans ce didacticiel Oracle pour créer une classe immuable, pour vous assurer que l'immuabilité de la classe est documentée, vous devez simplement vous assurer que vous y mentionnez le dans le JavaDoc décrivant la classe et ce qu'elle Est-ce que.
Si cela ne correspond toujours pas à vos besoins, vous pouvez voir comment vous pouvez créer des balises JavaDoc personnalisées ici .
la source
Vous pouvez utiliser des annotations:
@ javax.annotation.concurrent.Immutable from JSR-305
ou @ net.jcip.annotations.Immutable from Java Concurrency In Practice
la source