我在我的java书上寻找解释,但我没有找到它。我正在网上寻找一篇文章,但我没有找到任何明确的。Collection <?是什么?扩展myObject>的意思?
是否Collection <? extends myObject>
意味着我可以把集合两者myObject的和扩展myObject的对象?它意味着什么吗?
我在我的java书上寻找解释,但我没有找到它。我正在网上寻找一篇文章,但我没有找到任何明确的。Collection <?是什么?扩展myObject>的意思?
是否Collection <? extends myObject>
意味着我可以把集合两者myObject的和扩展myObject的对象?它意味着什么吗?
它意味着任何对象都可以替换?
即a-kind-of
关系或子类myObject的,这里myObject的可class
或interface
例如:
class Doctor{}
class GeneralDoctor extends Doctor{}
class Dentist extends Doctor{}
然后,Collection<? extends Doctor> doctors;
将仅接受的儿童医生(即GeneralDoctor
或Dentist
)
Collection <? extends myObject>
是否意味着我可以在Collection中同时添加myObject和扩展myObject的对象?
不是真的 - 这意味着该集合是某种特定类型的集合,它可以扩展为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
它被称为通用方法。这个整体概念在Java中被称为“泛型”。该声明意味着T可以是任何类型,它是myObject的子类
http://stackoverflow.com/questions/252055/java-generics-wildcards – assylias
当您尝试将不同种类的东西放入集合中时发生了什么?我的意思是,你这样做,对吧? –
http://stackoverflow.com/questions/4343202/difference-between-super-t-and-extends-t-in-java –