Java 什么是<;?超级真空>;什么意思?
我在维护的代码中遇到了此类:Java 什么是<;?超级真空>;什么意思?,java,generics,Java,Generics,我在维护的代码中遇到了此类: new GenericFutureListener<Future<? super Void>>() {...} newgenericfuturelistener是的,您可以对该侦听器使用Future,但声明明确指出,侦听器应该/不使用结果 将其声明为GenericFutureListener会给人这样的印象,即侦听器会对结果做一些事情。有时我们只关心任务是否完成 有些人(比如我)可能更愿意返回Future,表示任务没有结果 而其他人可能更喜
new GenericFutureListener<Future<? super Void>>() {...}
newgenericfuturelistener是的,您可以对该侦听器使用Future
,但声明明确指出,侦听器应该/不使用结果
将其声明为GenericFutureListener
会给人这样的印象,即侦听器会对结果做一些事情。有时我们只关心任务是否完成
有些人(比如我)可能更愿意返回Future
,表示任务没有结果
而其他人可能更喜欢使用Future
或Future
并使用null
作为结果
我想这家伙遇到了未来
和未来
。所以他使用了Future,正如您所注意到的,这个Future它看起来是为了符合一些泛型类型,比如GenericFutureListener其他人没有指出的东西:它很烦人,如果您看一下,您会发现库中有一些方法只使用这种类型,例如ChannelPromise.addListener(GenericFutureListener有时可能是未来的
。需要更多的上下文,例如,如何使用它?涉及的类型是什么(因为它似乎不是java.util.concurrent.Future
)因为未来不一样。问题可能不同,为什么不干脆Future
。我没有否决投票btw@Eugene那么,我想你也可以使用Future
。为什么要投反对票?这个答案与两分钟后欧内斯特•克的答案几乎相同(但也可以说是更好的表述).@Eugene你不是故意的:-)您自己也说过,Void
是最终的,所以声明?super Void
而不是Void
没有什么意义only@Eugene对于?extensed Void
,这是正确的,但对于super
,情况并非如此@Eugene同意。但从技术上讲,人们可以宣布未来我看到他们有自己的未来版本de>可以用作消费者。@jornverne是的。顺便说一句,有一个声明网站差异的JEP:但它还不是发布的目标。@jornverne很高兴知道!
class GenericFutureListener<T> {}
public static <T> void m(GenericFutureListener<Future<? super T>> p) {
...
}
m(new GenericFutureListener<Future<? super Void>>() {}); // works,
m(new GenericFutureListener<Future<Void>>() {}); // does not work