什么收藏<! - ?扩展myObject - >意味着什么?

时间:2015-01-08 08:45:52

标签: java

我在我的java书上寻找解释,但我找不到它。我正在互联网上寻找一篇文章,但我找不到任何明确的内容。

Collection <? extends myObject>是否意味着我可以将 myObject 和扩展 myObject 的对象放入集合中?这意味着什么?

3 个答案:

答案 0 :(得分:2)

这意味着任何对象都可以替换?关系或myObject的子类a-kind-of,其中myObject可以是classinterface

例如:

class Doctor{}

class GeneralDoctor extends Doctor{}

class Dentist extends Doctor{}

然后,Collection<? extends Doctor> doctors;只会接受医生的孩子(即GeneralDoctorDentist

答案 1 :(得分:1)

  

Collection <? extends myObject>是否意味着我可以将myObject和扩展myObject的对象放入Collection中?

不是 - 这意味着该集合是一些扩展myObject的特定类型的集合。举一个更清晰的例子,如果你有一个Collection<? extends Number>,它可以是Collection<Integer>,也可以是Collection<Double>Collection<Number>,但你不知道哪个。

因此,您无法向该集合添加任何内容,因为您不知道其泛型类型是什么。但是,如果您从该集合中获取了一个元素,则可以确保它是Number

List<? extends Number> c = getList();
Number n = c.get(0); //ok
c.add(1); //not ok, c could well be a List<BigDecimal>, we don't know

答案 2 :(得分:1)

它被称为通用方法。整个概念被称为&#34;泛型&#34;在Java中。该声明意味着T可以是myObject

的子类的任何类型