我最近参加了一次 Java 考试,其中有很多关于 Java 通配符泛型的部分。然而,关于它们在实践中的用法却很少提及。我们什么时候应该使用它们?我们来看一个典型的用法:
void check(Collection<? extends Animal> list) {
// Do something
}
文档所说的,这个集合不允许向列表中添加任何元素。所以基本上通配符可用于使集合成为只读。这是他们唯一的用途吗?有实际需要吗?在过去的四年里,我参与了很多 Java 编程项目,但我还没有看到任何项目会广泛使用通配符这样的特性。
那么,从实践的角度来看,是否存在通配符泛型是不可避免和必要的情况呢?