2012-04-18 8 views
4

https://gist.github.com/2414323JavaにResolvedFutureクラスはありますか?

計算の結果は既に分かっていますが、インターフェイスにはFutureを返す必要があることがあります。長い匿名クラスを実装するのではなく、それ自体が複雑なAbstractFutureやFutureTaskを拡張するのではなく、Futureを実装する小さなホルダークラスを作成する方が簡単です。

私の質問は、以下のようなクラスは既に標準ライブラリの1つにありますか?

用途:

Future<Boolean> iHaveToReturnAFutureButIAlreadyKnowTheAnswer() { 
    return new ResolvedFuture(true); 
} 

コード:

/** 
* Used when you need to return a Future, but you already have the answer. 
*/ 
public class ResolvedFuture<T> implements Future<T>{ 
    private final T item; 

    public ResolvedFuture(T item) { 
     this.item = item; 
    } 

    @Override 
    public boolean cancel(boolean mayInterruptIfRunning) { 
     return false; 
    } 

    @Override 
    public boolean isCancelled() { 
     return false; 
    } 

    @Override 
    public boolean isDone() { 
     return true; 
    } 

    @Override 
    public T get() throws InterruptedException, ExecutionException { 
     return item; 
    } 

    @Override 
    public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { 
     return item; 
    } 
} 

答えて

6

標準ライブラリがそれをサポートしていますが、一部のサードパーティのライブラリはありませんが、そのような実装が含まれています。たとえば、Google GuavaのFutures.immediateFuture()です。

関連する問題