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

java.lang.Object
  extended by com.google.common.collect.ForwardingObject
      extended by 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), 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) 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) in terms of add(E). If you override add(E), you may wish to override addAll(java.util.Collection) 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.