Недавно я наткнулся на то, насколько полезны неизменяемые объекты и что, например, если вы передаете элементы конструктору и ваш класс должен быть неизменным, вы должны скопировать эти элементы, если они сами не являются неизменяемыми.
Это требует много проверок или знаний о моем проекте, потому что если у меня есть
public A(B foo)
и B
не является неизменным, A
я должен был бы скопировать B
. Теперь представьте, что B
кажется неизменным, но сам по себе имеет изменяемые классы в конструкторе и так далее.
Есть ли стандарт или лучшие практики для документирования, если класс неизменен в Java? Кажется, @immutable
в Javadoc нет ключевого слова.
@Immutable аннотаций , кажется, что - то совершенно другое для производства авто класса и не является частью стандартной Java.
java
documentation
immutability
Aufziehvogel
источник
источник
Ответы:
Глядя на документацию
String
класса (я выделил жирный текст):Как вы можете видеть, здесь нет конкретной маркировки или других маркеров, однако они указывают в JavaDoc, описывающем класс, что этот
String
класс представляет собой постоянный неизменный объект.Таким образом, предполагая, что вы следовали инструкциям, приведенным в этом руководстве по Oracle, для создания неизменяемого класса, чтобы убедиться, что неизменность класса задокументирована, вы должны просто указать в нем JavaDoc, описывающий класс и его значение. делает.
Если это по-прежнему не соответствует вашим потребностям, вы можете посмотреть, как можно создавать собственные теги JavaDoc здесь .
источник
Вы можете использовать аннотации:
@ javax.annotation.concurrent.Imutable от JSR-305
или @ net.jcip.annotations.Imutable из Java параллелизма на практике
источник