我想实现一个带签名的函数
static boolean checkAnyOutOfBoundary(int[] index,ArrayList<ArrayList<T>> list)
我希望将T替换为其他自创类(DocScore)。我试图用对象替换T.但是当我尝试实例化列表实例时,比如
ArrayList<ArrayList<Object>> DocScoreList = new ArrayList<ArrayList<Object>>();
for (int i = 0; i < index.length; i++)
DocScoreList.add(root.children.get(i).docList);
The type of root.children.get(i).docList is ArrayList<DocScore>
我无法在DocScoreList中添加元素。有谁知道我该怎么做呢?
答案 0 :(得分:1)
因此,您要向ArrayList<DocScore>
添加ArrayList<ArrayList<Object>>
,但add方法需要ArrayList<Object>
。
您能提供ArrayList<DocStore>
,其中ArrayList<Object>
是必需的吗?不,因为A bag of banana is not a bag of fruit
因此DocScoreList
必须是ArrayList
可以添加ArrayList<DocStore>
的内容。一些例子是:
ArrayList<DocStore>
实际类型List<DocStore>
因为ArrayList<T>
是 List<T>
ArrayList<? extends Object>
某些未知类型的列表(直接或间接)扩展Object
。由于DocStore
符合条件? extends Object
,这将有效。 List<? extends Object>
答案 1 :(得分:0)
因为即使Bar
是Foo
的子类,ArrayList也不是ArrayList的超类。
更改
ArrayList<ArrayList<Object>> DocScoreList = new ArrayList<ArrayList<Object>>();
到
ArrayList<ArrayList<? extends Object>> DocScoreList = new ArrayList<ArrayList<? extends Object>>();
答案 2 :(得分:0)
static <T> boolean checkAnyOutOfBoundary(int[] index,ArrayList<ArrayList<T>> list)
调用它的示例:
boolean b = checkAnyOutOfBoundary( new int[]{0,1}, new ArrayList<ArrayList<String>>());