Class AbstractExtendedCollection<E>

java.lang.Object
one.microstream.collections.AbstractExtendedCollection<E>
Type Parameters:
E - type of contained elements
All Implemented Interfaces:
ExtendedCollection<E>
Direct Known Subclasses:
AbstractArrayCollection, AbstractChainCollection

public abstract class AbstractExtendedCollection<E>
extends Object
implements ExtendedCollection<E>
This class is an implementation-internal for optional performance optimisation.

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 behavior, while the technique described here is a cleanly encapsuled implementation detail used in combination with proper typing.