簡體   English   中英

Java:如何將二維ArrayList傳遞給方法/構造函數

[英]Java: How to pass 2 dimensional ArrayList to a method/constructor

我試圖將2d ArrayList傳遞給構造函數。 構造函數的標頭是這樣的:

public Table( ArrayList<ArrayList<?>> table )
{

之后,我嘗試在main中實現以下代碼:

ArrayList<ArrayList<Object>> 2dList = new ArrayList<ArrayList<Object>>(2); 

Table Data1 = new Table( 2dList );

但是,當我嘗試這樣的代碼時,出現以下錯誤:

no suitable contructor found for Table(java.util.ArrayList<java.util.ArrayList<java.lang.Object>>)
    constructor Table.Table(java.util.ArrayList<java.util.ArrayList<?>>) is not applicable
    (argument mismatch; java.util.ArrayList<java.util.ArrayList<java.lang.Object>> cannot be converted to java.util.ArrayList<java.util.ArrayList<?>>)

什么是正確的實現? 如果我誤解了任何基本概念或犯了一個愚蠢的錯誤,請原諒我。

謝謝。

即使ArrayList<Object>ArrayList<?>ArrayList<ArrayList<Object>>也不是ArrayList<ArrayList<?>>出於同樣的原因, List<Dog>不是List<Animal>即使DogAnimal

要傳遞ArrayList<ArrayList<Object>> ,請在簽名中包含另一個通配符:

public Table( ArrayList<? extends ArrayList<?>> table )

變量名不能以數字開頭! 2dList應該是list2D或類似的東西

也像這樣聲明您的構造函數

public Table(ArrayList<? extends ArrayList<?>> list2D) {

}

或者像這樣

public <E> Table(ArrayList<ArrayList<E>> list2D) {

}

暫無
暫無

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

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