Package net.jcip.annotations
Annotation Type Immutable
-
@Documented @Target(TYPE) @Retention(RUNTIME) 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.
String
is an immutable class, despite having an internal int that is non-final but used as a cache forString.hashCode()
. Immutable objects are inherently thread-safe; they may be passed between threads or published without synchronization. - All public fields must be