Rez*_*eem 1 java constructor arraylist
我试图将2d ArrayList传递给构造函数.构造函数的标题是这样的:
public Table( ArrayList<ArrayList<?>> table )
{
Run Code Online (Sandbox Code Playgroud)
在此之后,我尝试在main中实现以下代码:
ArrayList<ArrayList<Object>> 2dList = new ArrayList<ArrayList<Object>>(2);
Table Data1 = new Table( 2dList );
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这样的代码时,我收到以下错误:
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<?>>)
Run Code Online (Sandbox Code Playgroud)
什么是正确的实施?如果我误解了任何基本想法或犯了一个愚蠢的错误,请原谅我.
谢谢.
一个ArrayList<ArrayList<Object>>不是一个ArrayList<ArrayList<?>>,即使它ArrayList<Object>是一个ArrayList<?>,出于同样的原因,即a List<Dog>不是a List<Animal>,即使a Dog是aAnimal.
要传递ArrayList<ArrayList<Object>>,请在签名中包含另一个通配符:
public Table( ArrayList<? extends ArrayList<?>> table )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
817 次 |
| 最近记录: |