gpt4 book ai didi

java - < 是什么意思?超虚空>是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 20:34:58 27 4
gpt4 key购买 nike

我在维护的代码中遇到过这个类:

new GenericFutureListener<Future<? super Void>>() {...}

我很难理解这意味着什么。一个 Future包含的类型为 Void或其父类(super class) - Object .那么为什么不直接写 Future<Object> ?

最佳答案

没有人指出的东西:它是 Netty,如果你看一下 https://netty.io/4.0/api/io/netty/util/concurrent/class-use/Future.html你会看到在库中有一些方法只采用这种类型,例如ChannelPromise.addListener(GenericFutureListener<? extends Future<? super java.lang.Void>> listener) .由于通用情况,这些方法具有此签名:Future.addListener(GenericFutureListener<? extends Future<? super V>> listener) . ChannelPromise只是扩展 Future<Void> .

一般情况是有意义的,因为 1. 如果您有 FutureListener<Future<Object>> ,它可以处理任何Object future 完成时的值(value); 2. 自从 VObject它可以处理V .因此它可以收听Future<V> .显然,V 的任何父类(super class)型都是如此。而不是 Object .

当然,如果 Java 有 declaration-site variance,这些签名会简单得多。 ,但它不会而且可能不会很快。

关于java - < 是什么意思?超虚空>是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51259224/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com