2012-04-18 2 views
4

https://gist.github.com/2414323Java에 ResolvedFuture 클래스가 있습니까?

가끔은 계산 결과를 알고 있지만 인터페이스에는 Future이 필요합니다. 긴 익명 클래스를 구현하거나 AbstractFuture 또는 FutureTask를 확장하는 대신 복잡한을 구현하는 작은 홀더 클래스를 만드는 것이 더 간단합니다.

제 질문은 - 아래에 쓴 것과 비슷한 클래스가 이미 표준 라이브러리 중 하나에 있습니까?

사용법 :

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()

관련 문제