自定义未来对象



我想创建自定义的 Future 对象。

以下代码工作正常

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

我想获取 submit 的返回值并将其分配给 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 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)));

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

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

然后我希望代码能够工作:

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

相关内容

  • 没有找到相关文章

最新更新