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.
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
.