[英]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>
即使Dog
是Animal
。
要傳遞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.