我在我的java书上寻找解释,但我找不到它。我正在互联网上寻找一篇文章,但我找不到任何明确的内容。
Collection <? extends myObject>
是否意味着我可以将 myObject 和扩展 myObject 的对象放入集合中?这意味着什么?
答案 0 :(得分:2)
这意味着任何对象都可以替换?
关系或myObject的子类a-kind-of
,其中myObject可以是class
或interface
例如:
class Doctor{}
class GeneralDoctor extends Doctor{}
class Dentist extends Doctor{}
然后,Collection<? extends Doctor> doctors;
只会接受医生的孩子(即GeneralDoctor
或Dentist
)
答案 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
的子类的任何类型