?表示“未知类型”。
Collection<? extendsObject>表示某种对象的集合。此“某种类型”可以是作为其子类
Object或
Object自身的任何类型。究竟是哪种类型?编译器不知道。
当您尝试向
Object集合中添加新内容时,您不能这样做。这是因为集合的类型未知。它可以是一个
ArrayList<String>。它可以是一个
HashSet<Integer>。所以编译器说
“如果收藏是
ArrayList<String>什么?你不能放在Object那里!”
基本上,编译器太谨慎了,您不能这样做。
Collection<? superObject>表示某种对象的集合。这种“某种类型的”可以是任何类型,它是一个超类
Object或
Object本身。在这里只能是一件事-
Object,因为
Object它没有超类。因此,您可以
Object向收藏夹中添加新商品。
即使
Object具有超类,您仍然可以添加
new Object()。让我们称为的超类
Object
MyClass。现在,该集合可以是
MyClass或的集合
Object。无论是哪种,您都可以为其添加一个
Object。



