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.