Class AbstractCollectionDecorator<E>
- Type Parameters:
E
- the type of the elements in the collection
- All Implemented Interfaces:
Serializable
,Iterable<E>
,Collection<E>
- Direct Known Subclasses:
AbstractDualBidiMap.View
,AbstractListDecorator
,AbstractSetDecorator
,UnmodifiableCollection
Collection
to provide additional behaviour.
Each method call made on this Collection
is forwarded to the
decorated Collection
. This class is used as a framework on which
to build to extensions such as synchronized and unmodifiable behaviour. The
main advantage of decoration is that one decorator can wrap any implementation
of Collection
, whereas sub-classing requires a new class to be
written for each implementation.
This implementation does not perform any special processing with
iterator()
. Instead it simply returns the value from the
wrapped collection. This may be undesirable, for example if you are trying
to write an unmodifiable implementation it might provide a loophole.
This implementation does not forward the hashCode and equals methods through
to the backing object, but relies on Object's implementation. This is necessary
to preserve the symmetry of equals. Custom definitions of equality are usually
based on an interface, such as Set or List, so that the implementation of equals
can cast the object being tested for equality to the custom interface.
AbstractCollectionDecorator does not implement such custom interfaces directly;
they are implemented only in subclasses. Therefore, forwarding equals would break
symmetry, as the forwarding object might consider itself equal to the object being
tested, but the reverse could not be true. This behavior is consistent with the
JDK's collection wrappers, such as Collections.unmodifiableCollection(Collection)
.
Use an interface-specific subclass of AbstractCollectionDecorator, such as
AbstractListDecorator, to preserve equality behavior, or override equals directly.
- Since:
- 3.0
- See Also:
-
Constructor Summary
ModifierConstructorDescriptionprotected
Constructor only used in deserialization, do not use otherwise.protected
Constructor that wraps (not copies). -
Method Summary
Modifier and TypeMethodDescriptionboolean
boolean
addAll
(Collection<? extends E> coll) void
clear()
boolean
boolean
containsAll
(Collection<?> coll) protected Collection<E>
Gets the collection being decorated.boolean
isEmpty()
iterator()
boolean
boolean
removeAll
(Collection<?> coll) boolean
boolean
retainAll
(Collection<?> coll) protected void
setCollection
(Collection<E> coll) Sets the collection being decorated.int
size()
Object[]
toArray()
<T> T[]
toArray
(T[] object) toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Collection
equals, hashCode, parallelStream, spliterator, stream, toArray
-
Constructor Details
-
AbstractCollectionDecorator
protected AbstractCollectionDecorator()Constructor only used in deserialization, do not use otherwise.- Since:
- 3.1
-
AbstractCollectionDecorator
Constructor that wraps (not copies).- Parameters:
coll
- the collection to decorate, must not be null- Throws:
NullPointerException
- if the collection is null
-
-
Method Details
-
decorated
Gets the collection being decorated. All access to the decorated collection goes via this method.- Returns:
- the decorated collection
-
setCollection
Sets the collection being decorated.NOTE: this method should only be used during deserialization
- Parameters:
coll
- the decorated collection
-
add
- Specified by:
add
in interfaceCollection<E>
-
addAll
- Specified by:
addAll
in interfaceCollection<E>
-
clear
public void clear()- Specified by:
clear
in interfaceCollection<E>
-
contains
- Specified by:
contains
in interfaceCollection<E>
-
isEmpty
public boolean isEmpty()- Specified by:
isEmpty
in interfaceCollection<E>
-
iterator
-
remove
- Specified by:
remove
in interfaceCollection<E>
-
size
public int size()- Specified by:
size
in interfaceCollection<E>
-
toArray
- Specified by:
toArray
in interfaceCollection<E>
-
toArray
public <T> T[] toArray(T[] object) - Specified by:
toArray
in interfaceCollection<E>
-
containsAll
- Specified by:
containsAll
in interfaceCollection<E>
-
removeIf
- Specified by:
removeIf
in interfaceCollection<E>
- Since:
- 4.4
-
removeAll
- Specified by:
removeAll
in interfaceCollection<E>
-
retainAll
- Specified by:
retainAll
in interfaceCollection<E>
-
toString
-