转换为自定义 ArrayList

我创建了一个自定义的 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();

但这会导致强制转换类异常。有人可以解释一下我做错了什么以及如何成功实现演员表吗?谢谢


犯罪嫌疑人X
浏览 117回答 1
1回答

慕斯王

你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) {&nbsp; &nbsp; super(c);}请注意,CustomArrayList使用此构造函数创建的实例是原始 的副本ArrayList,因此该实例中的更改不会反映在原始 中List。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java