@GwtCompatible public abstract class ForwardingSet<E> extends ForwardingCollection<E> implements Set<E>
A set which forwards all its method calls to another set. Subclasses should override one or more methods to modify the behavior of the backing set as desired per the decorator pattern.
Warning: The methods of ForwardingSet
forward indiscriminately to the methods of the delegate. For example, overriding ForwardingCollection.add(E)
alone will not change the behavior of ForwardingCollection.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.
Modifier | Constructor and Description |
---|---|
protected |
ForwardingSet()
Constructor for use by subclasses.
|
Modifier and Type | Method and Description |
---|---|
protected abstract Set<E> |
delegate()
Returns the backing delegate instance that methods are forwarded to.
|
boolean |
equals(Object object) |
int |
hashCode() |
protected boolean |
standardEquals(Object object)
A sensible definition of
equals(java.lang.Object) in terms of ForwardingCollection.size() and ForwardingCollection.containsAll(java.util.Collection<?>) . |
protected int |
standardHashCode()
A sensible definition of
hashCode() in terms of ForwardingCollection.iterator() . |
protected boolean |
standardRemoveAll(Collection<?> collection)
A sensible definition of
ForwardingCollection.removeAll(java.util.Collection<?>) in terms of ForwardingCollection.iterator() and ForwardingCollection.remove(java.lang.Object) . |
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, removeAll, retainAll, size, standardAddAll, standardClear, standardContains, standardContainsAll, standardIsEmpty, standardRemove, standardRetainAll, standardToArray, standardToArray, standardToString, toArray, toArray
toString
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, removeAll, retainAll, size, spliterator, toArray, toArray
parallelStream, removeIf, stream
protected abstract Set<E> delegate()
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 delegate()
. Concrete subclasses override this method to supply the instance being decorated.
delegate
in class ForwardingCollection<E>
public int hashCode()
protected boolean standardRemoveAll(Collection<?> collection)
A sensible definition of ForwardingCollection.removeAll(java.util.Collection<?>)
in terms of ForwardingCollection.iterator()
and ForwardingCollection.remove(java.lang.Object)
. If you override iterator
or remove
, you may wish to override ForwardingCollection.removeAll(java.util.Collection<?>)
to forward to this implementation.
standardRemoveAll
in class ForwardingCollection<E>
ForwardingCollection
version as of 12.0)protected boolean standardEquals(@Nullable Object object)
A sensible definition of equals(java.lang.Object)
in terms of ForwardingCollection.size()
and ForwardingCollection.containsAll(java.util.Collection<?>)
. If you override either of those methods, you may wish to override equals(java.lang.Object)
to forward to this implementation.
protected int standardHashCode()
A sensible definition of hashCode()
in terms of ForwardingCollection.iterator()
. If you override ForwardingCollection.iterator()
, you may wish to override equals(java.lang.Object)
to forward to this implementation.