Top Description Constructors Methods
com.google.common.collect

public abstract Class ForwardingCollection<E extends @Nullable Object>

extends ForwardingObject
implements Collection<E extends @Nullable Object>
Class Inheritance
All Implemented Interfaces
java.util.Collection, java.lang.Iterable
Known Direct Subclasses
com.google.common.collect.ForwardingMultiset, com.google.common.collect.ForwardingQueue, com.google.common.collect.ForwardingSet, com.google.common.collect.Maps.UnmodifiableEntries, com.google.common.collect.Sets.CartesianSet, com.google.common.collect.TreeRangeSet.AsRanges, com.google.common.collect.ForwardingList, com.google.common.collect.FilteredKeyMultimap.Entries
Annotations
@GwtCompatible
@ElementTypesAreNonnullByDefault
Imports
com.google.common.annotations.GwtCompatible, com.google.common.base.Objects, com.google.errorprone.annotations.CanIgnoreReturnValue, java.util.Collection, .Iterator, javax.annotation.CheckForNull, org.checkerframework.checker.nullness.qual.Nullable

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, overriding add alone will not change the behavior of addAll, which can lead to unexpected behavior. In this case, you should override addAll as well, either providing your own implementation, or delegating to the provided standardAddAll method.

default method warning: This class does not forward calls to default methods. Instead, it inherits their default implementations. When those implementations invoke methods, they invoke methods on the ForwardingCollection.

The standard methods are not guaranteed to be thread-safe, even when all of the methods that they depend on are thread-safe.

Authors
Kevin Bourrillion, Louis Wasserman
Since
2.0

Constructor Summary

AccessConstructor and Description
protected
ForwardingCollection()

Constructor for use by subclasses.

Method Summary

Modifier and TypeMethod and Description
public boolean
add(E
element whose presence in this collection is to be ensured
element
)

Implements java.util.Collection.add.

Ensures that this collection contains the specified element (optional operation).
public boolean
addAll(Collection<? extends E>
collection containing elements to be added to this collection
collection
)

Implements java.util.Collection.addAll.

Adds all of the elements in the specified collection to this collection (optional operation).
public void
clear()

Implements java.util.Collection.clear.

Removes all of the elements from this collection (optional operation).
public boolean
contains(Object
element whose presence in this collection is to be tested
object
)

Implements java.util.Collection.contains.

Returns true if this collection contains the specified element.
public boolean
containsAll(Collection<?>
collection to be checked for containment in this collection
collection
)

Implements java.util.Collection.containsAll.

Returns true if this collection contains all of the elements in the specified collection.
protected abstract Collection<E>
delegate()

Implements abstract com.google.common.collect.ForwardingObject.delegate.

Returns the backing delegate instance that methods are forwarded to.
public boolean
isEmpty()

Implements java.util.Collection.isEmpty.

Returns true if this collection contains no elements.
public Iterator<E>
iterator()

Implements java.util.Collection.iterator.

Returns an iterator over the elements in this collection.
public boolean
remove(Object
element to be removed from this collection, if present
object
)

Implements java.util.Collection.remove.

Removes a single instance of the specified element from this collection, if it is present (optional operation).
public boolean
removeAll(Collection<?>
collection containing elements to be removed from this collection
collection
)

Implements java.util.Collection.removeAll.

Removes all of this collection's elements that are also contained in the specified collection (optional operation).
public boolean
retainAll(Collection<?>
collection containing elements to be retained in this collection
collection
)

Implements java.util.Collection.retainAll.

Retains only the elements in this collection that are contained in the specified collection (optional operation).
public int
size()

Implements java.util.Collection.size.

Returns the number of elements in this collection.
protected boolean
standardAddAll(Collection<? extends E> collection)

A sensible definition of addAll in terms of add.

protected void
standardClear()

A sensible definition of clear in terms of iterator, using the iterator's remove method.

protected boolean
standardContains(Object object)

A sensible definition of contains in terms of iterator.

protected boolean
standardContainsAll(Collection<?> collection)

A sensible definition of containsAll in terms of contains .

protected boolean
standardIsEmpty()

A sensible definition of isEmpty as !iterator().hasNext.

protected boolean
standardRemove(Object object)

A sensible definition of remove in terms of iterator, using the iterator's remove method.

protected boolean
standardRemoveAll(Collection<?> collection)

A sensible definition of removeAll in terms of iterator, using the iterator's remove method.

protected boolean
standardRetainAll(Collection<?> collection)

A sensible definition of retainAll in terms of iterator, using the iterator's remove method.

protected @Nullable Object[]
standardToArray()

A sensible definition of toArray() in terms of toArray(Object[]).

protected <T extends @Nullable Object> T[]
standardToArray(T[] array)

A sensible definition of toArray(Object[]) in terms of size and iterator.

protected String
standardToString()

A sensible definition of toString in terms of iterator.

public @Nullable Object[]
toArray()

Implements java.util.Collection.toArray.

Returns an array containing all of the elements in this collection.
public <T extends @Nullable Object> T[]
toArray(T[]
the array into which the elements of this collection are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose.
array
)

Implements java.util.Collection.toArray.

Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array.
Inherited from com.google.common.collect.ForwardingObject:
toString

Constructor Detail

ForwardingCollectionback to summary
protected ForwardingCollection()

Constructor for use by subclasses.

Method Detail

addback to summary
public boolean add(E element)

Implements java.util.Collection.add.

Doc from java.util.Collection.add.

Ensures that this collection contains the specified element (optional operation). Returns true if this collection changed as a result of the call. (Returns false if this collection does not permit duplicates and already contains the specified element.)

Collections that support this operation may place limitations on what elements may be added to this collection. In particular, some collections will refuse to add null elements, and others will impose restrictions on the type of elements that may be added. Collection classes should clearly specify in their documentation any restrictions on what elements may be added.

If a collection refuses to add a particular element for any reason other than that it already contains the element, it must throw an exception (rather than returning false). This preserves the invariant that a collection always contains the specified element after this call returns.

Parameters
element:E

element whose presence in this collection is to be ensured

Returns:boolean

true if this collection changed as a result of the call

Annotations
@CanIgnoreReturnValue
@Override
addAllback to summary
public boolean addAll(Collection<? extends E> collection)

Implements java.util.Collection.addAll.

Doc from java.util.Collection.addAll.

Adds all of the elements in the specified collection to this collection (optional operation). The behavior of this operation is undefined if the specified collection is modified while the operation is in progress. (This implies that the behavior of this call is undefined if the specified collection is this collection, and this collection is nonempty.) If the specified collection has a defined encounter order, processing of its elements generally occurs in that order.

Parameters
collection:Collection<? extends E>

collection containing elements to be added to this collection

Returns:boolean

true if this collection changed as a result of the call

Annotations
@CanIgnoreReturnValue
@Override
clearback to summary
public void clear()

Implements java.util.Collection.clear.

Doc from java.util.Collection.clear.

Removes all of the elements from this collection (optional operation). The collection will be empty after this method returns.

Annotations
@Override
containsback to summary
public boolean contains(Object object)

Implements java.util.Collection.contains.

Doc from java.util.Collection.contains.

Returns true if this collection contains the specified element. More formally, returns true if and only if this collection contains at least one element e such that Objects.equals(o, e).

Parameters
object:Object

element whose presence in this collection is to be tested

Returns:boolean

true if this collection contains the specified element

Annotations
@Override
containsAllback to summary
public boolean containsAll(Collection<?> collection)

Implements java.util.Collection.containsAll.

Doc from java.util.Collection.containsAll.

Returns true if this collection contains all of the elements in the specified collection.

Parameters
collection:Collection<?>

collection to be checked for containment in this collection

Returns:boolean

true if this collection contains all of the elements in the specified collection

Annotations
@Override
delegateback to summary
protected abstract Collection<E> delegate()

Implements abstract com.google.common.collect.ForwardingObject.delegate.

Doc from com.google.common.collect.ForwardingObject.delegate.

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 as ForwardingSet#delegate. Concrete subclasses override this method to supply the instance being decorated.

Annotations
@Override
isEmptyback to summary
public boolean isEmpty()

Implements java.util.Collection.isEmpty.

Doc from java.util.Collection.isEmpty.

Returns true if this collection contains no elements.

Returns:boolean

true if this collection contains no elements

Annotations
@Override
iteratorback to summary
public Iterator<E> iterator()

Implements java.util.Collection.iterator.

Doc from java.util.Collection.iterator.

Returns an iterator over the elements in this collection. There are no guarantees concerning the order in which the elements are returned (unless this collection is an instance of some class that provides a guarantee).

Returns:Iterator<E>

an Iterator over the elements in this collection

Annotations
@Override
removeback to summary
public boolean remove(Object object)

Implements java.util.Collection.remove.

Doc from java.util.Collection.remove.

Removes a single instance of the specified element from this collection, if it is present (optional operation). More formally, removes an element e such that Objects.equals(o, e), if this collection contains one or more such elements. Returns true if this collection contained the specified element (or equivalently, if this collection changed as a result of the call).

Parameters
object:Object

element to be removed from this collection, if present

Returns:boolean

true if an element was removed as a result of this call

Annotations
@CanIgnoreReturnValue
@Override
removeAllback to summary
public boolean removeAll(Collection<?> collection)

Implements java.util.Collection.removeAll.

Doc from java.util.Collection.removeAll.

Removes all of this collection's elements that are also contained in the specified collection (optional operation). After this call returns, this collection will contain no elements in common with the specified collection.

Parameters
collection:Collection<?>

collection containing elements to be removed from this collection

Returns:boolean

true if this collection changed as a result of the call

Annotations
@CanIgnoreReturnValue
@Override
retainAllback to summary
public boolean retainAll(Collection<?> collection)

Implements java.util.Collection.retainAll.

Doc from java.util.Collection.retainAll.

Retains only the elements in this collection that are contained in the specified collection (optional operation). In other words, removes from this collection all of its elements that are not contained in the specified collection.

Parameters
collection:Collection<?>

collection containing elements to be retained in this collection

Returns:boolean

true if this collection changed as a result of the call

Annotations
@CanIgnoreReturnValue
@Override
sizeback to summary
public int size()

Implements java.util.Collection.size.

Doc from java.util.Collection.size.

Returns the number of elements in this collection. If this collection contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.

Returns:int

the number of elements in this collection

Annotations
@Override
standardAddAllback to summary
protected boolean standardAddAll(Collection<? extends E> collection)

A sensible definition of addAll in terms of add. If you override add, you may wish to override addAll to forward to this implementation.

Since
7.0
standardClearback to summary
protected void standardClear()

A sensible definition of clear in terms of iterator, using the iterator's remove method. If you override iterator, you may wish to override clear to forward to this implementation.

Since
7.0
standardContainsback to summary
protected boolean standardContains(Object object)

A sensible definition of contains in terms of iterator. If you override iterator, you may wish to override contains to forward to this implementation.

Since
7.0
standardContainsAllback to summary
protected boolean standardContainsAll(Collection<?> collection)

A sensible definition of containsAll in terms of contains . If you override contains, you may wish to override containsAll to forward to this implementation.

Since
7.0
standardIsEmptyback to summary
protected boolean standardIsEmpty()

A sensible definition of isEmpty as !iterator().hasNext. If you override isEmpty, you may wish to override isEmpty to forward to this implementation. Alternately, it may be more efficient to implement isEmpty as size() == 0.

Since
7.0
standardRemoveback to summary
protected boolean standardRemove(Object object)

A sensible definition of remove in terms of iterator, using the iterator's remove method. If you override iterator, you may wish to override remove to forward to this implementation.

Since
7.0
standardRemoveAllback to summary
protected boolean standardRemoveAll(Collection<?> collection)

A sensible definition of removeAll in terms of iterator, using the iterator's remove method. If you override iterator, you may wish to override removeAll to forward to this implementation.

Since
7.0
standardRetainAllback to summary
protected boolean standardRetainAll(Collection<?> collection)

A sensible definition of retainAll in terms of iterator, using the iterator's remove method. If you override iterator, you may wish to override retainAll to forward to this implementation.

Since
7.0
standardToArrayback to summary
protected @Nullable Object[] standardToArray()

A sensible definition of toArray() in terms of toArray(Object[]). If you override toArray(Object[]), you may wish to override toArray to forward to this implementation.

Since
7.0
standardToArrayback to summary
protected <T extends @Nullable Object> T[] standardToArray(T[] array)

A sensible definition of toArray(Object[]) in terms of size and iterator. If you override either of these methods, you may wish to override toArray to forward to this implementation.

Since
7.0
standardToStringback to summary
protected String standardToString()

A sensible definition of toString in terms of iterator. If you override iterator, you may wish to override toString to forward to this implementation.

Since
7.0
toArrayback to summary
public @Nullable Object[] toArray()

Implements java.util.Collection.toArray.

Doc from java.util.Collection.toArray.

Returns an array containing all of the elements in this collection. If this collection makes any guarantees as to what order its elements are returned by its iterator, this method must return the elements in the same order. The returned array's runtime component type is Object.

The returned array will be "safe" in that no references to it are maintained by this collection. (In other words, this method must allocate a new array even if this collection is backed by an array). The caller is thus free to modify the returned array.

Returns:@Nullable Object[]

an array, whose runtime component type is Object, containing all of the elements in this collection

Annotations
@Override
toArrayback to summary
public <T extends @Nullable Object> T[] toArray(T[] array)

Implements java.util.Collection.toArray.

Doc from java.util.Collection.toArray.

Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array. If the collection fits in the specified array, it is returned therein. Otherwise, a new array is allocated with the runtime type of the specified array and the size of this collection.

If this collection fits in the specified array with room to spare (i.e., the array has more elements than this collection), the element in the array immediately following the end of the collection is set to null. (This is useful in determining the length of this collection only if the caller knows that this collection does not contain any null elements.)

If this collection makes any guarantees as to what order its elements are returned by its iterator, this method must return the elements in the same order.

Parameters
<T>
the component type of the array to contain the collection
array:T[]

the array into which the elements of this collection are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose.

Returns:T[]

an array containing all of the elements in this collection

Annotations
@CanIgnoreReturnValue
@Override
@SuppressWarnings:nullness