public interface Immutable
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:
class Polygon implements Immutable {
private List<Point2D> _vertices;
public Polygon(List<Point2D> vertices) {
_vertices = (vertices instanceof Immutable) ?
vertices : // Safe, the vertices cannot be modified by the client.
new FastTable<Point2D>(vertices); // Defensive copying required.
}
}
Copyright © 2005 - 2007 Javolution.