在 Java 5 中,ExecutorService
接口声明了方法:
<T> List<Future<T>> invokeAll(Collection<Callable<T>> tasks)
throws InterruptedException;
而用 Java 6 编写但据称与 Java 5 兼容的 Guava 11.0.2 将其覆盖ListeningExecutorService
为:
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
throws InterruptedException;
如果我想实现我自己的ListeningExecutorService
,我需要实现这两种方法,但我也不能有两种方法相同的擦除,所以它有点像 Catch 22。
有没有办法解决这个问题?更具体地说,有没有办法ListeningExecutorService
在 Java 5 中实现 a?
作为任何番石榴人的旁注——番石榴是否真的有必要重新声明这种方法,因为它已经继承自ExecutorService
?