¿Cómo debo anotar que una clase es inmutable en Java?

14

Recientemente descubrí cuán útiles son los objetos inmutables y, por ejemplo, Si le pasas elementos a un constructor y tu clase debería ser inmutable, debes copiar estos elementos si no son inmutables ellos mismos.

Esto requiere mucha comprobació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 que B parece inmutable, pero en sí mismo tiene clases mutables en el constructor, etc.

¿Existe un estándar o una mejor práctica para documentar si una clase es inmutable en Java? Parece que no hay una palabra clave @immutable en Javadoc.

La @Immutable anotación parece ser algo totalmente diferente para la generación de clases de auto y no en parte de Java estándar.

    
pregunta Aufziehvogel 05.02.2015 - 12:58

2 respuestas

7

Revisando la documentación de la String class ( el texto en negrita es algo que hice):

  

La clase String representa cadenas de caracteres. Todos los literales de cuerda en   Los programas Java, como "abc", se implementan como ejemplos de esto   clase.    Las cadenas son constantes; sus valores no se pueden cambiar después de crearlos. los búferes de cadena admiten cadenas mutables. Porque la cadena   Los objetos son inmutables, se pueden compartir.

Como puede ver, no hay etiquetas u otros marcadores en particular, sin embargo, sí especifican en el JavaDoc que describe la clase que la clase String representa un objeto constante e inmutable.

Por lo tanto, asumiendo que siguió las instrucciones proporcionadas en este tutorial de Oracle para crear una clase inmutable, para asegurarse de que se documente la inmutabilidad de la clase, debe asegurarse de mencionar en ella en el JavaDoc que describe la clase y lo que hace.

Si eso todavía no se adapta a lo que necesita, puede echar un vistazo a cómo podría crear etiquetas JavaDoc personalizadas here .

    
respondido por el npinti 05.02.2015 - 14:27

Lea otras preguntas en las etiquetas