| This interface identifies classes whose instances are not subject or
susceptible to change or variation after creation. Once a class is
declared immutable, any subclass must ensure immutability as well.
Immutable objects can safely be used in a multi-threaded
environment and do not require defensive copying.
For example:[code]
class Polygon implements Immutable {
private List _vertices;
public Polygon(List vertices) {
_vertices = (vertices instanceof Immutable) ?
vertices : // Safe, the vertices cannot be modified by the client.
new FastTable(vertices); // Defensive copying required.
}
}[/code]
See Also:
* Wikipedia: Immutable Object author: Jean-Marie Dautelle version: 3.7, February 6, 2006 |