我在我的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 –