为什么 ExecutorService.submit(Runnable task) 返回 Future<?> 而不是 Future<Void>?
2022-09-03 02:52:42
在提交方法实现 void 中使用 Jdk 1.8,而在 jdk1.6 中它是 Object 。我的理解是使用void更合适,这就是为什么它在jdk1.7 / 1.8中更改的原因.仅用于支持不更改它的接口
public Future<?> submit(Runnable task) {
if (task == null) throw new NullPointerException();
RunnableFuture<Void> ftask = newTaskFor(task, null);
execute(ftask);
return ftask;
}
和 JDK 1.6
public Future<?> submit(Runnable task) {
if (task == null) throw new NullPointerException();
RunnableFuture<Object> ftask = newTaskFor(task, null);
execute(ftask);
return ftask;
}
请注意,s 方法返回基元而不是类型。因此,不能有一个类型,解决方案是使其成为通配符。请注意,它来自java 1.5,而来自1.0。由于遗留代码的原因,他们不会更改 的返回类型以符合。Runnable
run
void
Void
Future
Void
Future
Runnable
run
Future