Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是<;?超级真空>;什么意思?_Java_Generics - Fatal编程技术网

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