【发布时间】:2023-03-15 16:01:02
【问题描述】:
在方法的返回参数中不应该使用泛型通配符类型是否可行?
换句话说,声明如下接口确实有意义:
interface Foo<T> {
Collection<? extends T> next();
}
此外,是否可以说通用通配符类型仅在方法的参数声明中才有意义?
【问题讨论】:
-
我想强调一点,因为我认为它在一个明显的地方解决得不够好,是集合上的通配符不构成该集合不可变的。我们可以从集合中删除元素,我们可以将
null添加到集合和we can even use wildcard capture to add non-nullelements to the collection if it's not empty。如果它是一个列表,那么我们也可以例如改变元素的顺序。 (除了能够丢弃通配符的问题之外,这一切都没有。)