## com.google.common.collect
Class ForwardingCollection<E>

    java.lang.Object
      com.google.common.collect.ForwardingObject
          com.google.common.collect.ForwardingCollection<E>

All Implemented Interfaces:
  Iterable<E>, Collection<E>

Direct Known Subclasses:
  ForwardingList, ForwardingMultiset, ForwardingQueue, ForwardingSet

    @GwtCompatible
    public abstract class ForwardingCollection<E>

extends ForwardingObject
implements 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, overriding `add(E)` alone will not change the behavior of `addAll(java.util.Collection<? extends E>)`, 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.

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)
Author:
  Kevin Bourrillion, Louis Wasserman

Constructor Summary
`protected` `ForwardingCollection()` Constructor for use by subclasses.

Method Summary
`boolean` `add(E element)`
`boolean` `addAll(Collection<? extends E> collection)`
`void` `clear()`
`boolean` `contains(Object object)`
`boolean` `containsAll(Collection<?> collection)`
`protected abstract Collection<E>` `delegate()` Returns the backing delegate instance that methods are forwarded to.
`boolean` `isEmpty()`
`Iterator<E>` `iterator()`
`boolean` `remove(Object object)`
`boolean` `removeAll(Collection<?> collection)`
`boolean` `retainAll(Collection<?> collection)`
`int` `size()`
`protected boolean` `standardAddAll(Collection<? extends E> collection)` A sensible definition of `addAll(java.util.Collection<? extends E>)` in terms of `add(E)`.
`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(java.lang.Object)` in terms of `iterator()`.
`protected boolean` `standardContainsAll(Collection<?> collection)` A sensible definition of `containsAll(java.util.Collection<?>)` in terms of `contains(java.lang.Object)` .
`protected boolean` `standardIsEmpty()` A sensible definition of `isEmpty()` as `!iterator().hasNext`.
`protected boolean` `standardRemove(Object object)` A sensible definition of `remove(java.lang.Object)` in terms of `iterator()`, using the iterator's `remove` method.
`protected boolean` `standardRemoveAll(Collection<?> collection)` A sensible definition of `removeAll(java.util.Collection<?>)` in terms of `iterator()`, using the iterator's `remove` method.
`protected boolean` `standardRetainAll(Collection<?> collection)` A sensible definition of `retainAll(java.util.Collection<?>)` in terms of `iterator()`, using the iterator's `remove` method.
`protected Object[]` `standardToArray()` A sensible definition of `toArray()` in terms of `toArray(Object[])`.

`protected

`<T> T[]`

`

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

`protected String` `standardToString()` A sensible definition of `ForwardingObject.toString()` in terms of `iterator()`.
`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`

Methods inherited from interface java.util.Collection
`equals, hashCode`

Constructor Detail

### ForwardingCollection

    protected ForwardingCollection()

  Constructor for use by subclasses.

Method Detail

### delegate

    protected abstract 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 as `ForwardingSet.delegate()`. Concrete subclasses override this method to supply the instance being decorated.

  Specified by:
    `delegate` in class `ForwardingObject`

### iterator

    public Iterator<E> iterator()

  Specified by:
    `iterator` in interface `Iterable<E>`
  Specified by:
    `iterator` in interface `Collection<E>`

### size

    public int size()

  Specified by:
    `size` in interface `Collection<E>`

### removeAll

    public boolean removeAll(Collection<?> collection)

  Specified by:
    `removeAll` in interface `Collection<E>`

### isEmpty

    public boolean isEmpty()

  Specified by:
    `isEmpty` in interface `Collection<E>`

### contains

    public boolean contains(Object object)

  Specified by:
    `contains` in interface `Collection<E>`

### add

    public boolean add(E element)

  Specified by:
    `add` in interface `Collection<E>`

### remove

    public boolean remove(Object object)

  Specified by:
    `remove` in interface `Collection<E>`

### containsAll

    public boolean containsAll(Collection<?> collection)

  Specified by:
    `containsAll` in interface `Collection<E>`

### addAll

    public boolean addAll(Collection<? extends E> collection)

  Specified by:
    `addAll` in interface `Collection<E>`

### retainAll

    public boolean retainAll(Collection<?> collection)

  Specified by:
    `retainAll` in interface `Collection<E>`

### clear

    public void clear()

  Specified by:
    `clear` in interface `Collection<E>`

### toArray

    public Object[] toArray()

  Specified by:
    `toArray` in interface `Collection<E>`

### toArray

    public <T> T[] toArray(T[] array)

  Specified by:
    `toArray` in interface `Collection<E>`

### standardContains

    @Beta
    protected boolean standardContains(@Nullable
                                            Object object)

  A sensible definition of `contains(java.lang.Object)` in terms of `iterator()`. If you override `iterator()`, you may wish to override `contains(java.lang.Object)` to forward to this implementation.

  Since:
    7.0

### standardContainsAll

    @Beta
    protected boolean standardContainsAll(Collection<?> collection)

  A sensible definition of `containsAll(java.util.Collection<?>)` in terms of `contains(java.lang.Object)` . If you override `contains(java.lang.Object)`, you may wish to override `containsAll(java.util.Collection<?>)` to forward to this implementation.

  Since:
    7.0

### standardAddAll

    @Beta
    protected boolean standardAddAll(Collection<? extends E> collection)

  A sensible definition of `addAll(java.util.Collection<? extends E>)` in terms of `add(E)`. If you override `add(E)`, you may wish to override `addAll(java.util.Collection<? extends E>)` to forward to this implementation.

  Since:
    7.0

### standardRemove

    @Beta
    protected boolean standardRemove(@Nullable
                                          Object object)

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

  Since:
    7.0

### standardRemoveAll

    @Beta
    protected boolean standardRemoveAll(Collection<?> collection)

  A sensible definition of `removeAll(java.util.Collection<?>)` in terms of `iterator()`, using the iterator's `remove` method. If you override `iterator()`, you may wish to override `removeAll(java.util.Collection<?>)` to forward to this implementation.

  Since:
    7.0

### standardRetainAll

    @Beta
    protected boolean standardRetainAll(Collection<?> collection)

  A sensible definition of `retainAll(java.util.Collection<?>)` in terms of `iterator()`, using the iterator's `remove` method. If you override `iterator()`, you may wish to override `retainAll(java.util.Collection<?>)` to forward to this implementation.

  Since:
    7.0

### standardClear

    @Beta
    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

### standardIsEmpty

    @Beta
    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

### standardToString

    @Beta
    protected String standardToString()

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

  Since:
    7.0

### standardToArray

    @Beta
    protected 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

### standardToArray

    @Beta
    protected <T> 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

Copyright © 2010-2012. All Rights Reserved.