自定义 Future 对象

Custom Future objects

我想创建自定义 Future 对象。

下面的代码工作正常

ThreadPoolExecutor mExecutor;
Future<?> f = mExecutor.submit(new DownloadRunnable(task, itemId));

我想获取提交的 return 值并将其分配给 MyFuture 对象,并进行额外的调用。 我进行了以下更改,并得到了强制转换异常...有什么建议吗?

ThreadPoolExecutor mExecutor;
// cast exception
MyFuture<?> f = (MyFuture<?>) mExecutor.submit(new DownloadRunnable(task, itemId));
f.setVer(true);


public class MyFuture<?> implements Future<?> {
    Boolean myVar;

    public void setVar(Boolean v) {
        ...
    }
}

好吧 Future 是一个接口,你应该这样写:

public class MuFuture<T> implements Future<T> {

}

然后我希望代码能正常工作:

MyFuture<?> f = (MyFuture<?>) mExecutor.submit(new DownloadRunnable(task, itemId));
f.setVer(true);

你可以通过传递 Future<?>

来创建构造函数
 public class MyFuture<?> extends Future<?> 
{
      Boolean myVar;
      Future<?> fut;
      MyFuture<?>(Future<?> fut)
      {
           this.fut = fut;
      }

      public void setVar(Boolean v) 
      {
          ...
      }
}

所以下面一行

  MyFuture<?> f = (MyFuture<?>) mExecutor.submit(new DownloadRunnable(task, itemId));

变成

  MyFuture<?> f = new MyFuture<?>(mExecutor.submit(new DownloadRunnable(task, itemId)));