https://gist.github.com/2414323
計算の結果をすでに知っている場合もありますが、インターフェイスでは。を返す必要があります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;
}
}