int[] 转换ArrayList时遇到的Bug
控制台报错如图:
其实,报错中说的很明白了,是 int[] 数组类型这里出了问题,我们只需要将 int[] 改为 Integer[] ,再使用Arrays.asList(aim); 就不会出现问题了。
import java.util.*;
public class Hello{
public static void main(String[] args){
System.out.println("Hello World!!");
Integer[] aim = {1,2,3,4,5,6,7,8,9}; //int[] aim = {1,2,3,4,5,6,7,8,9};报错;
List<Integer> ans = Arrays.asList(aim);
System.out.println(ans.subList(0,2).toString());
System.out.println(ans.subList(2,9).toString());
}
}
参考
我在makersy先生的文章中了解到这个问题:
因为Arrays.asList()是泛型方法,传入的对象必须是对象数组。如果传入的是基本类型的数组,那么此时得到的list只有一个元素,那就是这个数组对象int[]本身。
查阅jdk8文档,并没有明确说明这个问题:
但是参数类型明确说明是对象数组,细节需要深思。
温故知新,未央书斋