方法的签名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
,如果我想为Mammal
,Animal
的 Listener 可以,但是 Dog
的 Listener 不行,因为我的 Mammal
也可以是 Cat
。
关于java - 为什么 netty Promise 监听器签名 future 的返回类型是 <?超V>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30367288/