[英]Java generic wildcard extend
為什么即使Integer擴展了Number>,我也不能向該類型的列表添加整數
List<? extends Number> numList = new ArrayList<Integer>();
Integer f = 12;
numList.add(f);
看看這篇關於PECS原理的文章。 相關報價:
您想將東西添加到集合中。
那么列表是一個消費者,因此您應該使用Collection<? super Thing>
Collection<? super Thing>
。
簡而言之,您將要使用super
而不是extends
:
List<? super Number> numList = new ArrayList<>();
Integer f = 12;
numList.add(f);
如果要存儲任何類型的號碼,只需執行以下操作:
List<Number> numList = new ArrayList<Number>();
如果要向列表中添加元素,則需要使用super關鍵字。
List<? super Integer> numList = new ArrayList<Integer>();
然后做
numList.add(10);
該列表可以定義為列表,也可以定義其他類型的列表,在這種情況下,編譯器不允許將整數存儲到列表中:這會在類型安全功能中造成問題。
如果您需要,您可以使用此
List<Number> numList = new ArrayList<Number>();
Integer f = 100;
numList.add(f);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.