簡體   English   中英

為什么以下Java代碼導致編譯錯誤

[英]Why is the following java code leads to compilation error

我目前正在努力使我的代碼包含更多泛型。 我遇到了一個看起來很復雜的編譯錯誤,但是在以下代碼中我可以將其減少到一個等效的錯誤:

List<List<?>> a = new ArrayList<List<Integer>>();

為什么會這樣? 我該如何解決?

具有不同類型參數的泛型類的實例不相關,即,即使StringObject的子類型, List<String>不是List<Object>的子類型,並且即使List<Integer>List<?>的子類型。 List<?>List<List<Integer>>不是List<List<?>>的子類型。

也許您正在尋找

List<? extends List<?>> a = new ArrayList<List<Integer>>();

兩側必須匹配內部List

List<List<?>> foo = new ArrayList<List<?>>();
foo.add(new ArrayList<Integer>());

盡管這很愚蠢,因為您剛剛定義了“可以容納任何內容的列表”的列表,並且除非您確切地知道外部列表中的每個列表,否則以后由於類型擦除而無法對其進行區分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM