Package net.jcip.annotations
Annotation Type Immutable
@Documented
@Target(TYPE)
@Retention(RUNTIME)
public @interface Immutable
The class to which this annotation is applied is immutable. This means that
its state cannot be seen to change by callers, which implies that
- all public fields are final,
- all public final reference fields refer to other immutable objects, and
- constructors and methods do not publish references to any internal state which is potentially mutable by the implementation.
Immutable objects are inherently thread-safe; they may be passed between threads or published without synchronization.