0

我想实现一个带有签名的函数

static boolean checkAnyOutOfBoundary(int[] index,ArrayList<ArrayList<T>> list)

我想用其他自创类(DocScore)替换 T。我试图用 Object 代替 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。有人知道我该如何实现吗?

4

3 回答 3

1

因此,您正在向ArrayList<DocScore>a添加一个,ArrayList<ArrayList<Object>>但 add 方法需要一个ArrayList<Object>.

你能提供一个需要的ArrayList<DocStore>地方ArrayList<Object>吗?不,因为一袋香蕉不是一袋水果

所以DocScoreList必须是一个可以添加ArrayList的东西。ArrayList<DocStore>一些例子是:

  • ArrayList<DocStore>实际类型
  • List<DocStore>因为ArrayList<T> 是一个 List<T>
  • ArrayList<? extends Object>(直接或间接)扩展的某些未知类型的列表Object。由于DocStore符合标准,? extends Object这将起作用。
  • List<? extends Object>
  • 等等。你明白了。
于 2013-02-15T19:56:33.753 回答
0

因为即使Bar是 的子类Foo,ArryList 也不是 ArrayList 的超类。

改变

ArrayList<ArrayList<Object>> DocScoreList = new ArrayList<ArrayList<Object>>();

ArrayList<ArrayList<? extends Object>> DocScoreList = new ArrayList<ArrayList<? extends Object>>();
于 2013-02-15T19:47:50.220 回答
0
static <T> boolean checkAnyOutOfBoundary(int[] index,ArrayList<ArrayList<T>> list)

调用它的示例:

boolean b = checkAnyOutOfBoundary( new int[]{0,1}, new ArrayList<ArrayList<String>>());
于 2013-02-15T19:48:01.940 回答