Annotation Type Immutable


@Documented public @interface Immutable
The presence of this annotation indicates that the author believes the class to be immutable and hence inherently thread-safe. An immutable class is one where the state of an instance cannot be seen to change. As a result
  • All public fields must be final
  • All public final reference fields are either null or refer to other immutable objects
  • Constructors and methods do not publish references to any potentially mutable internal state.
Performance optimization may mean that instances of an immutable class may have mutable internal state. The critical point is that callers cannot tell the difference. For example String is an immutable class, despite having an internal int that is non-final but used as a cache for String.hashCode().

Immutable objects are inherently thread-safe; they may be passed between threads or published without synchronization.

This annotation is intended for internal use in OSHI as a temporary workaround until it is available in jakarta.annotations.