- Type Parameters:
- All Implemented Interfaces:
public abstract class AbstractExtendedCollection<E> extends Object implements ExtendedCollection<E>
It is the base class for every extended collection, even if the extending class does not implement
XAddingCollection. Subclasses of this class that do not implement
XAddingCollection will throw an
UnsupportedOperationException in the adding methods defined in this class.
All code using the optimisation methods in here has to ensure that it can only be legally called for implementations of
XAddingCollection, for example by using
XAddingCollection as the concrete parameter type.
Note that this technique of using
UnsupportedOperationException is explicitly not comparable to the
JDK's approach like in
Collections.unmodifiableCollection(java.util.Collection) where a
general pupose type (java.util.Collection) is implemented intentionally broken to achieve a certain reduced
while the technique described here is a cleanly encapsuled implementation detail used in combination with proper