从源码中找问题
这个源码的截图看出来的问题就是的这里出入的参数类型是泛型T,这就是问题的根源。这个T表示派生自Object类的任何类,比如String,Integer,Double等等。泛型只能是引用类型,基础类型int、double等不是引用类型,但是数组是引用类型,那么这个参数泛型T只能是数组的引用类型。所以我们传基础类数组的时候,就只会认为你只传一个值。
代码演示
int[] array={1,2,4,5};
for(int aa:array){
System.out.println(aa);
}
//我们出入的基础类型数组就是的一个list的第一个元素
for(int[] aa:Arrays.asList(array)){
for(int a:aa){
System.out.println(a);
}
}
总结
Arrays.asList的参数你建议传引用类型的数组就不会有这样的问题,要么取值的时候多取一层。观察这类问题直接看源码的是最有效的,网上的那些感觉都没有说到问题的点子上,源码是最直接有效的问题解决途径。