java - 为什么 netty Promise 监听器签名 future 的返回类型是 <?超V>

标签 java generics promise netty

方法的签名addListener对于 io.netty.util.concurrent.Promise<V>

Promise<V> addListener(GenericFutureListener<? extends Future<? super V>> listener)

请解释为什么参数不是 GenericFutureListener<? extends Future<? extends V>> 类型 因为 promise 的结果应该是 V 似乎是有道理的或其子类,但不是其父类(super class)。

但是为什么Future的返回类型是<? super V>

最佳答案

我们这里需要的是至少可以听V 的东西。它可能能够收听更多,但如果它只能收听 V 的子类,那是不够的。

例如,对于类链 Animal -> Mammal -> Dog,如果我想为MammalAnimal 的 Listener 可以,但是 Dog 的 Listener 不行,因为我的 Mammal 也可以是 Cat

关于java - 为什么 netty Promise 监听器签名 future 的返回类型是 <?超V>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30367288/

相关文章:

java - Spring 不会反序列化 json 字符串(不带引号的属性)

c# - “Could not find type” 在设计器中加载窗体时出错

typescript :可变函数参数取决于前面的参数

C# - 代码有什么问题(泛型、静态方法等)

JavaScript Promises - 在继续之前等待解决

java - 范围搜索 3 列的字符串

java - 如何在首次应用启动时触发教程(Android)

java - 当我已经使用 onBackPressed() 来让 webview 返回时,如何在 android 应用程序中弹出警报框以退出?

javascript - 如何从云代码模块返回 Parse promise?

JavaScript:Promise.all 结果中有 1 个未定义值