Java泛型:通配符、类型参数与比较接口的深入解析
1. 协变数组与泛型
在某种程度上,协变数组是早期Java版本缺乏泛型的产物。引入泛型后,协变数组可能是一个错误的设计选择,保留它们仅仅是为了向后兼容。对于许多用途而言,将数组视为已弃用的类型或许是明智的。
2. 通配符与类型参数
contains 方法用于检查集合是否包含给定对象,其扩展方法 containsAll 用于检查一个集合是否包含另一个集合的所有元素。下面介绍为这些方法提供泛型签名的两种不同方法。
2.1 通配符方法
在Java的泛型中,这些方法的类型如下:
interface Collection<E> {
...
public boolean contains(Object o);
public boolean containsAll(Collection<?> c);
...
}
第一个方法根本不使用泛型,第二个方法引入了一个重要的缩写。 Collection<?> 代表 Collection<? extends Object> ,扩展 Object 是通配符最常见的用法之一,因此提供一个简写形式是合理的。
以下是使用这些方法进行成员和包含性测试的示例:
超级会员免费看
订阅专栏 解锁全文
424

被折叠的 条评论
为什么被折叠?



