public interface Immutable extends MutationBehaviour<Immutable>
Marker interface for objects which are immutable. This interface should be used directly on objects, preferably final, which are eligible for the JSR-305 @Immutable annotation and objects implementing this interface are required to abide to interface contract specified by @Immutable.
The reason for the existence of this interface is twofold: unlike @Immutable, it is visible at runtime and objects can be quickly checked for compliance using a quick 'instanceof' check. This is useful for code which needs to capture a point-in-time snapshot of otherwise unknown objects -- a typical example being logging/tracing systems. Such systems would normally have to rely on serializing the object to get a stable checkpoint. Objects marked with this interface are guaranteed to remain stable, thus already being a checkpoint for all intents and purposes, so aside from retaining a reference no further action on them is necessary.
Implementations of this interface must not change any public state during their whole lifecycle.
This interface is mutually exclusive with Mutable
and other
MutationBehaviour
s.
Copyright © 2017 OpenDaylight. All rights reserved.