Java:如何将二维数组列表传递给方法/构造函数



我正在尝试将 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) {
}

最新更新