我想创建自定义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) {
...
}
}
答案 0 :(得分:2)
您可以通过传递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)));
答案 1 :(得分:0)
好Future
是一个界面,你应该写成:
public class MuFuture<T> implements Future<T> {
}
然后我希望代码可以运行:
MyFuture<?> f = (MyFuture<?>) mExecutor.submit(new DownloadRunnable(task, itemId));
f.setVer(true);