com.google.common.util.concurrent

## Class ForwardingFuture<V>

- java.lang.Object
- - com.google.common.collect.ForwardingObject
  - - com.google.common.util.concurrent.ForwardingFuture<V>

- All Implemented Interfaces:
    java.util.concurrent.Future<V>
  Direct Known Subclasses:
    ForwardingFuture.SimpleForwardingFuture, ForwardingListenableFuture

      public abstract class ForwardingFuture<V>
      extends ForwardingObject
      implements java.util.concurrent.Future<V>

  A `Future` which forwards all its method calls to another future. Subclasses should override one or more methods to modify the behavior of the backing future as desired per the decorator pattern.

  Most subclasses can just use `ForwardingFuture.SimpleForwardingFuture`.

  Since:
    1.0

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ForwardingFuture.SimpleForwardingFuture<V>` A simplified version of `ForwardingFuture` where subclasses can pass in an already constructed `Future` as the delegate.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `ForwardingFuture()` Constructor for use by subclasses.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `cancel(boolean mayInterruptIfRunning)`
    `protected abstract java.util.concurrent.Future<V>` | `delegate()` Returns the backing delegate instance that methods are forwarded to.
    `V` | `get()`
    `V` | `get(long timeout, java.util.concurrent.TimeUnit unit)`
    `boolean` | `isCancelled()`
    `boolean` | `isDone()`

    - ### 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`

- - ### Constructor Detail

    - #### ForwardingFuture

          protected ForwardingFuture()

      Constructor for use by subclasses.

  - ### Method Detail

    - #### delegate

          protected abstract java.util.concurrent.Future<V> 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`

    - #### cancel

          public boolean cancel(boolean mayInterruptIfRunning)

      Specified by:
        `cancel` in interface `java.util.concurrent.Future<V>`

    - #### isCancelled

          public boolean isCancelled()

      Specified by:
        `isCancelled` in interface `java.util.concurrent.Future<V>`

    - #### isDone

          public boolean isDone()

      Specified by:
        `isDone` in interface `java.util.concurrent.Future<V>`

    - #### get

          public V get()
                throws java.lang.InterruptedException,
                       java.util.concurrent.ExecutionException

      Specified by:
        `get` in interface `java.util.concurrent.Future<V>`
      Throws:
        `java.lang.InterruptedException`
        `java.util.concurrent.ExecutionException`

    - #### get

          public V get(long timeout,
              java.util.concurrent.TimeUnit unit)
                throws java.lang.InterruptedException,
                       java.util.concurrent.ExecutionException,
                       java.util.concurrent.TimeoutException

      Specified by:
        `get` in interface `java.util.concurrent.Future<V>`
      Throws:
        `java.lang.InterruptedException`
        `java.util.concurrent.ExecutionException`
        `java.util.concurrent.TimeoutException`