纯属犯蠢,可以看一看,没有什么可以学到的东西
在分析Stream的时候写的测试代码出现了异常,那为什么Arrays.asList会出现ClassCastException?
代码
1 | public static void main(String[] args) { |
执行结果
执行结果为 Exception in thread “main” java.lang.ClassCastException: [I cannot be cast to java.lang.Integer
开始分析
看一下asList方法做了些什么,首先他构建了一个内部的ArrayList
1 | // Arrays.java |
再来看这个内部类是如何构造的
1 | //Arrays.ArrayList.java |
为什么asList的参数是一个不定参。。。难道。。。
打开断点进行Debug,果然lists的实际size为1,包含了一个int[]数组,其实这个方法并不是把数组转换为集合而是把所有参数放到一个集合中。