Java中是否有一个ResolvedFuture类?

4

https://gist.github.com/2414323

有时候,你已经知道计算结果,但是你的接口需要返回一个Future。与其实现一个长的匿名类,或者扩展AbstractFuture或FutureTask这些本身就很复杂的类,我发现创建一个只实现Future的小持有者类更简单。
我的问题是:类似于我下面写的这个类,在标准库中是否已经存在? 用法:
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;
    }
}
1个回答

6

标准库不支持此功能,但一些第三方库可能包含这样的实现。例如,来自Google Guava的Futures.immediateFuture()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接