我创建了一个自定义的 ArrayList 对象,并在尝试转换到这个对象时收到一个错误。我想我误解了一些东西,因为我认为这会起作用。如果我有一个自定义的 ArrayList 对象,它只会处理整数的 ArrayList:public class CustomArrayList extends ArrayList<Integer>{ public void customMethod() { // do things with integer arraylist }}我希望我可以像下面这样投射一个整数列表:List<Integer> myList = new ArrayList<>();((CustomArrayList) myList).customMethod();但这会导致强制转换类异常。有人可以解释一下我做错了什么以及如何成功实现演员表吗?谢谢
1 回答
慕斯王
TA贡献1864条经验 获得超2个赞
你CustomArrayList是一个ArrayList<Integer>,但一个ArrayList<Integer>不是一个CustomArrayList。
如果要将任意转换ArrayList<Integer>为 a CustomArrayList,可以编写:
List<Integer> myList = new ArrayList<>();
CustomArrayList customList = new CustomArrayList(myList);
customList.customMethod();
这将需要添加一个构造函数来CustomArrayList接受 aCollection<Integer>并将其传递给ArrayList的public ArrayList(Collection<? extends E> c构造函数。
public CustomArrayList(Collection<Integer> c) {
super(c);
}
请注意,CustomArrayList使用此构造函数创建的实例是原始 的副本ArrayList,因此该实例中的更改不会反映在原始 中List。
添加回答
举报
0/150
提交
取消