com.google.common.util.concurrent

## Class ForwardingCheckedFuture<V,X extends java.lang.Exception>

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

- Type Parameters:
    `V` - The result type returned by this Future's `get` method
    `X` - The type of the Exception thrown by the Future's `checkedGet` method
  All Implemented Interfaces:
    CheckedFuture<V,X>, ListenableFuture<V>, java.util.concurrent.Future<V>
  Direct Known Subclasses:
    ForwardingCheckedFuture.SimpleForwardingCheckedFuture

      @Beta
      public abstract class ForwardingCheckedFuture<V,X extends java.lang.Exception>
      extends ForwardingListenableFuture<V>
      implements CheckedFuture<V,X>

  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 simply extend `ForwardingCheckedFuture.SimpleForwardingCheckedFuture`.

  Since:
    9.0

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ForwardingCheckedFuture.SimpleForwardingCheckedFuture<V,X extends java.lang.Exception>` A simplified version of `ForwardingCheckedFuture` where subclasses can pass in an already constructed `CheckedFuture` as the delegate.

    - ### Nested classes/interfaces inherited from class com.google.common.util.concurrent.ForwardingListenableFuture

      `ForwardingListenableFuture.SimpleForwardingListenableFuture<V>`

    - ### Nested classes/interfaces inherited from class com.google.common.util.concurrent.ForwardingFuture

      `ForwardingFuture.SimpleForwardingFuture<V>`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ForwardingCheckedFuture()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `V` | `checkedGet()` Exception checking version of `Future.get()` that will translate `InterruptedException`, `CancellationException` and `ExecutionException` into application-specific exceptions.
    `V` | `checkedGet(long timeout, java.util.concurrent.TimeUnit unit)` Exception checking version of `Future.get(long, TimeUnit)` that will translate `InterruptedException`, `CancellationException` and `ExecutionException` into application-specific exceptions.
    `protected abstract CheckedFuture<V,X>` | `delegate()` Returns the backing delegate instance that methods are forwarded to.

    - ### Methods inherited from class com.google.common.util.concurrent.ForwardingListenableFuture

      `addListener`

    - ### Methods inherited from class com.google.common.util.concurrent.ForwardingFuture

      `cancel, get, get, isCancelled, 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`

    - ### Methods inherited from interface com.google.common.util.concurrent.ListenableFuture

      `addListener`

    - ### Methods inherited from interface java.util.concurrent.Future

      `cancel, get, get, isCancelled, isDone`

- - ### Constructor Detail

    - #### ForwardingCheckedFuture

          public ForwardingCheckedFuture()

  - ### Method Detail

    - #### checkedGet

          public V checkedGet()
                       throws X extends java.lang.Exception

      Description copied from interface: `CheckedFuture`
      Exception checking version of `Future.get()` that will translate `InterruptedException`, `CancellationException` and `ExecutionException` into application-specific exceptions.
      Specified by:
        `checkedGet` in interface `CheckedFuture<V,X extends java.lang.Exception>`
      Returns:
        the result of executing the future.
      Throws:
        `X` - on interruption, cancellation or execution exceptions.
        `X extends java.lang.Exception`

    - #### checkedGet

          public V checkedGet(long timeout,
                     java.util.concurrent.TimeUnit unit)
                       throws java.util.concurrent.TimeoutException,
                              X extends java.lang.Exception

      Description copied from interface: `CheckedFuture`
      Exception checking version of `Future.get(long, TimeUnit)` that will translate `InterruptedException`, `CancellationException` and `ExecutionException` into application-specific exceptions. On timeout this method throws a normal `TimeoutException`.
      Specified by:
        `checkedGet` in interface `CheckedFuture<V,X extends java.lang.Exception>`
      Returns:
        the result of executing the future.
      Throws:
        `java.util.concurrent.TimeoutException` - if retrieving the result timed out.
        `X` - on interruption, cancellation or execution exceptions.
        `X extends java.lang.Exception`

    - #### delegate

          protected abstract CheckedFuture<V,X> 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 `ForwardingListenableFuture<V>`