Recientemente me topé con lo útiles que son los objetos inmutables y que, por ejemplo, si pasa elementos a un constructor y su clase debe ser inmutable, debe copiar estos elementos si no son inmutables.
Esto requiere mucha verificación o conocimiento sobre mi proyecto, porque si tengo
public A(B foo)
y B
no es inmutable, A
tendría que copiar B
. Ahora imagine B
parece inmutable, pero tiene clases mutables en el constructor y así sucesivamente.
¿Existe algún estándar o práctica recomendada para documentar si una clase es inmutable en Java? Parece que no hay una @immutable
palabra clave en Javadoc.
La anotación @Immutable parece ser algo totalmente diferente para la generación automática de clases y no forma parte de Java estándar.
java
documentation
immutability
Aufziehvogel
fuente
fuente
Respuestas:
Mirando la documentación de la
String
clase (el texto en negrita es algo que hice):Como puede ver, no hay un etiquetado particular u otros marcadores, sin embargo, sí especifican en el JavaDoc que describe la clase que la
String
clase representa un objeto constante e inmutable.Por lo tanto, suponiendo que haya seguido las instrucciones proporcionadas en este tutorial de Oracle para crear una clase inmutable, para asegurarse de que la inmutabilidad de la clase esté documentada, debe asegurarse de mencionar en ella el JavaDoc que describe la clase y qué hace.
Si eso aún no se ajusta a lo que necesita, puede echar un vistazo a cómo podría crear etiquetas JavaDoc personalizadas aquí .
fuente
Puedes usar anotaciones:
@ javax.annotation.concurrent.Immutable de JSR-305
o @ net.jcip.annotations.Immutable de Java Concurrency In Practice
fuente