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 Bno es inmutable, Atendría que copiar B. Ahora imagine Bparece 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 @immutablepalabra 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
Stringclase (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
Stringclase 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