【发布时间】:2015-07-31 20:26:11
【问题描述】:
在我的代码的开头,有:
List<List<Integer>> result = new ArrayList();
然后,(这里是反转一个子列表):
List<Integer> sub = new ArrayList();
re = reverse(result.get(j)); // error occurs here
有这个方法:
public ArrayList<Integer> reverse(ArrayList<Integer> list) {
List<Integer> newList = new ArrayList<>();
for(int i=list.size()-1; i>=0; i--) {
newList.add(list.get(i));}
return newList;
}
}
错误信息是:
List 无法转换为 ArrayList
为什么?
【问题讨论】:
-
re是如何声明的?请记住,List不是ArrayList,但恰恰相反。 -
List是接口,ArrayList是实现List接口的类之一。因此,任何 ArrayList 都是 List(即 ArrayList 可以隐式分配给 List),但反之则不然。将返回类型更改为 List
,或将 newList 变量类型更改为 ArrayList 。顺便把“return”移出循环体。 -
不要使用原始类型
ArrayList。使用new ArrayList<>();而不是new ArrayList();。
标签: java list typeconverter