为了账号安全,请及时绑定邮箱和手机立即绑定

转换为自定义 ArrayList

转换为自定义 ArrayList

犯罪嫌疑人X 2021-11-24 18:45:31
我创建了一个自定义的 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。


查看完整回答
反对 回复 2021-11-24
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信