Package com.google.common.collect
Class ForwardingCollection<E>
- java.lang.Object
-
- com.google.common.collect.ForwardingObject
-
- com.google.common.collect.ForwardingCollection<E>
-
- All Implemented Interfaces:
java.lang.Iterable<E>
,java.util.Collection<E>
- Direct Known Subclasses:
ForwardingList
,ForwardingMultiset
,ForwardingQueue
,ForwardingSet
@GwtCompatible public abstract class ForwardingCollection<E> extends ForwardingObject implements java.util.Collection<E>
A collection which forwards all its method calls to another collection. Subclasses should override one or more methods to modify the behavior of the backing collection as desired per the decorator pattern.Warning: The methods of
ForwardingCollection
forward indiscriminately to the methods of the delegate. For example, overridingadd(E)
alone will not change the behavior ofaddAll(java.util.Collection<? extends E>)
, which can lead to unexpected behavior. In this case, you should overrideaddAll
as well, either providing your own implementation, or delegating to the providedstandardAddAll
method.The
standard
methods are not guaranteed to be thread-safe, even when all of the methods that they depend on are thread-safe.- Since:
- 2.0 (imported from Google Collections Library)
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
ForwardingCollection()
Constructor for use by subclasses.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
add(E element)
boolean
addAll(java.util.Collection<? extends E> collection)
void
clear()
boolean
contains(java.lang.Object object)
boolean
containsAll(java.util.Collection<?> collection)
protected abstract java.util.Collection<E>
delegate()
Returns the backing delegate instance that methods are forwarded to.boolean
isEmpty()
java.util.Iterator<E>
iterator()
boolean
remove(java.lang.Object object)
boolean
removeAll(java.util.Collection<?> collection)
boolean
retainAll(java.util.Collection<?> collection)
int
size()
protected boolean
standardAddAll(java.util.Collection<? extends E> collection)
A sensible definition ofaddAll(java.util.Collection<? extends E>)
in terms ofadd(E)
.protected void
standardClear()
protected boolean
standardContains(java.lang.Object object)
A sensible definition ofcontains(java.lang.Object)
in terms ofiterator()
.protected boolean
standardContainsAll(java.util.Collection<?> collection)
A sensible definition ofcontainsAll(java.util.Collection<?>)
in terms ofcontains(java.lang.Object)
.protected boolean
standardIsEmpty()
A sensible definition ofisEmpty()
as!iterator().hasNext
.protected boolean
standardRemove(java.lang.Object object)
A sensible definition ofremove(java.lang.Object)
in terms ofiterator()
, using the iterator'sremove
method.protected boolean
standardRemoveAll(java.util.Collection<?> collection)
A sensible definition ofremoveAll(java.util.Collection<?>)
in terms ofiterator()
, using the iterator'sremove
method.protected boolean
standardRetainAll(java.util.Collection<?> collection)
A sensible definition ofretainAll(java.util.Collection<?>)
in terms ofiterator()
, using the iterator'sremove
method.protected java.lang.Object[]
standardToArray()
A sensible definition oftoArray()
in terms oftoArray(Object[])
.protected <T> T[]
standardToArray(T[] array)
protected java.lang.String
standardToString()
A sensible definition ofForwardingObject.toString()
in terms ofiterator()
.java.lang.Object[]
toArray()
<T> T[]
toArray(T[] array)
-
Methods inherited from class com.google.common.collect.ForwardingObject
toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
-
-
-
Method Detail
-
delegate
protected abstract java.util.Collection<E> delegate()
Description copied from class:ForwardingObject
Returns the backing delegate instance that methods are forwarded to. Abstract subclasses generally override this method with an abstract method that has a more specific return type, such asForwardingSet.delegate()
. Concrete subclasses override this method to supply the instance being decorated.- Specified by:
delegate
in classForwardingObject
-
iterator
public java.util.Iterator<E> iterator()
-
size
public int size()
- Specified by:
size
in interfacejava.util.Collection<E>
-
removeAll
public boolean removeAll(java.util.Collection<?> collection)
- Specified by:
removeAll
in interfacejava.util.Collection<E>
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty
in interfacejava.util.Collection<E>
-
contains
public boolean contains(java.lang.Object object)
- Specified by:
contains
in interfacejava.util.Collection<E>
-
remove
public boolean remove(java.lang.Object object)
- Specified by:
remove
in interfacejava.util.Collection<E>
-
containsAll
public boolean containsAll(java.util.Collection<?> collection)
- Specified by:
containsAll
in interfacejava.util.Collection<E>
-
addAll
public boolean addAll(java.util.Collection<? extends E> collection)
- Specified by:
addAll
in interfacejava.util.Collection<E>
-
retainAll
public boolean retainAll(java.util.Collection<?> collection)
- Specified by:
retainAll
in interfacejava.util.Collection<E>
-
clear
public void clear()
- Specified by:
clear
in interfacejava.util.Collection<E>
-
toArray
public java.lang.Object[] toArray()
- Specified by:
toArray
in interfacejava.util.Collection<E>
-
toArray
public <T> T[] toArray(T[] array)
- Specified by:
toArray
in interfacejava.util.Collection<E>
-
standardContains
protected boolean standardContains(@Nullable java.lang.Object object)
A sensible definition ofcontains(java.lang.Object)
in terms ofiterator()
. If you overrideiterator()
, you may wish to overridecontains(java.lang.Object)
to forward to this implementation.- Since:
- 7.0
-
standardContainsAll
protected boolean standardContainsAll(java.util.Collection<?> collection)
A sensible definition ofcontainsAll(java.util.Collection<?>)
in terms ofcontains(java.lang.Object)
. If you overridecontains(java.lang.Object)
, you may wish to overridecontainsAll(java.util.Collection<?>)
to forward to this implementation.- Since:
- 7.0
-
standardAddAll
protected boolean standardAddAll(java.util.Collection<? extends E> collection)
A sensible definition ofaddAll(java.util.Collection<? extends E>)
in terms ofadd(E)
. If you overrideadd(E)
, you may wish to overrideaddAll(java.util.Collection<? extends E>)
to forward to this implementation.- Since:
- 7.0
-
standardRemove
protected boolean standardRemove(@Nullable java.lang.Object object)
A sensible definition ofremove(java.lang.Object)
in terms ofiterator()
, using the iterator'sremove
method. If you overrideiterator()
, you may wish to overrideremove(java.lang.Object)
to forward to this implementation.- Since:
- 7.0
-
standardRemoveAll
protected boolean standardRemoveAll(java.util.Collection<?> collection)
A sensible definition ofremoveAll(java.util.Collection<?>)
in terms ofiterator()
, using the iterator'sremove
method. If you overrideiterator()
, you may wish to overrideremoveAll(java.util.Collection<?>)
to forward to this implementation.- Since:
- 7.0
-
standardRetainAll
protected boolean standardRetainAll(java.util.Collection<?> collection)
A sensible definition ofretainAll(java.util.Collection<?>)
in terms ofiterator()
, using the iterator'sremove
method. If you overrideiterator()
, you may wish to overrideretainAll(java.util.Collection<?>)
to forward to this implementation.- Since:
- 7.0
-
standardClear
protected void standardClear()
A sensible definition ofclear()
in terms ofiterator()
, using the iterator'sremove
method. If you overrideiterator()
, you may wish to overrideclear()
to forward to this implementation.- Since:
- 7.0
-
standardIsEmpty
protected boolean standardIsEmpty()
A sensible definition ofisEmpty()
as!iterator().hasNext
. If you overrideisEmpty()
, you may wish to overrideisEmpty()
to forward to this implementation. Alternately, it may be more efficient to implementisEmpty
assize() == 0
.- Since:
- 7.0
-
standardToString
protected java.lang.String standardToString()
A sensible definition ofForwardingObject.toString()
in terms ofiterator()
. If you overrideiterator()
, you may wish to overrideForwardingObject.toString()
to forward to this implementation.- Since:
- 7.0
-
standardToArray
protected java.lang.Object[] standardToArray()
A sensible definition oftoArray()
in terms oftoArray(Object[])
. If you overridetoArray(Object[])
, you may wish to overridetoArray()
to forward to this implementation.- Since:
- 7.0
-
standardToArray
protected <T> T[] standardToArray(T[] array)
A sensible definition oftoArray(Object[])
in terms ofsize()
anditerator()
. If you override either of these methods, you may wish to overridetoArray()
to forward to this implementation.- Since:
- 7.0
-
-