Recentemente, deparei com a utilidade de objetos imutáveis e que, por exemplo, se você passa elementos para um construtor e sua classe deve ser imutável, você deve copiar esses elementos se eles não forem imutáveis.
Isso requer muita verificação ou conhecimento sobre o meu projeto, porque se eu tiver
public A(B foo)
e B
não é imutável, A
eu teria que copiar B
. Agora imagine B
parece imutável, mas ele próprio tem classes mutáveis no construtor e assim por diante.
Existe um padrão ou prática recomendada para documentar se uma classe é imutável em Java? Parece que não há nenhuma @immutable
palavra-chave no Javadoc.
A anotação @Immutable parece ser algo totalmente diferente para a geração automática de classes e não faz parte do Java padrão.
java
documentation
immutability
Aufziehvogel
fonte
fonte
Respostas:
Examinando a documentação da
String
classe (texto em negrito é algo que eu fiz):Como você pode ver, não há rotulagem específica ou outros marcadores; no entanto, eles especificam no JavaDoc que descreve a classe que a
String
classe representa um objeto constante e imutável.Assim, assumindo que você seguiu as instruções fornecidas neste tutorial do Oracle para criar uma classe imutável, para garantir que a imutabilidade da classe esteja documentada, você deve mencionar nela o JavaDoc que descreve a classe e o que faz.
Se isso ainda não se adequar ao que você precisa, você pode dar uma olhada em como criar tags JavaDoc personalizadas aqui .
fonte
Você pode usar anotações:
@ javax.annotation.concurrent.Immutable de JSR-305
ou @ net.jcip.annotations.Immutable from Java Concurrency In Practice
fonte