<span style="white-space:pre"> </span>System.out.println("Arrays.asList(param)的param类型是 :int[]--------------");
int[] intArray1 = new int[]{1,2,3};
List<int[]> intList = Arrays.asList(intArray1);
System.out.println(intList.get(0)[0]);
System.out.println(intList.get(0)[2]);
System.out.println("intList.size():"+intList.size());
System.out.println("Arrays.asList(param)的param类型是 :几个int类型的数字--------------");
List<Integer> integerList1 = Arrays.asList(1,2,3);
System.out.println("integerList1.size():"+integerList1.size());
for (int int2: integerList1) {
System.out.println(int2);
}
System.out.println("Arrays.asList(param)的param类型是 :Integer[]--------------");
Integer[] integerArray2 = new Integer[]{1,2,3};
List<Integer> integerList2 = Arrays.asList(integerArray2);
System.out.println("integerList.size():"+integerList2.size());
for (int int3: integerList2) {
System.out.println(int3);
}
System.out.println("Arrays.asList(param)的param类型是 :char[]--------------");
char[] charArray = new char[]{'a','b'};
List<char[]> charList = Arrays.asList(charArray);
System.out.println("charList.size():"+charList.size());
System.out.println(charList.get(0)[0]);
System.out.println(charList.get(0)[1]);
System.out.println("Arrays.asList(param)的param类型是:几个char类型的字符--------------");
List<Character> CharacterList1 = Arrays.asList('a','b','c');
System.out.println("CharacterList1.size():"+CharacterList1.size());
for(char c2 : CharacterList1){
System.out.println(c2);
}
System.out.println("Arrays.asList(param)的param类型是 :String[]--------------");
String[] s = new String[]{"1","2"};
List<String> ss = Arrays.asList(s);
System.out.println("ss.size():"+ss.size());
for (String str: ss) {
System.out.println(str);
}
System.out.println("Arrays.asList(param)的param类型是 :几个String类型的字符串--------------");
List<String> ss2 = Arrays.asList("ab","bc","cd");
System.out.println("ss2.size():"+ss2.size());
for (String str: ss2) {
System.out.println(str);
}
System.out.println("follow :Student Object---------------1");
Student[] stuArray = {new Student(),new Student(),new Student(),new Student()};
List<Student> stuList = Arrays.asList(stuArray);
System.out.println("stuList.size():"+stuList.size());
for (Student stu: stuList) {
System.out.println(stu);
}
程序运行后的结果
Arrays.asList(param)的param类型是 :int[]--------------
1
3
intList.size():1
Arrays.asList(param)的param类型是 :几个int类型的数字--------------
integerList1.size():3
1
2
3
Arrays.asList(param)的param类型是 :Integer[]--------------
integerList.size():3
1
2
3
Arrays.asList(param)的param类型是 :char[]--------------
charList.size():1
a
b
Arrays.asList(param)的param类型是:几个char类型的字符--------------
CharacterList1.size():3
a
b
c
Arrays.asList(param)的param类型是 :String[]--------------
ss.size():2
1
2
Arrays.asList(param)的param类型是 :几个String类型的字符串--------------
ss2.size():3
ab
bc
cd
follow :Student Object---------------1
stuList.size():4
name=yy age=0 score1=0
name=yy age=0 score1=0
name=yy age=0 score1=0
name=yy age=0 score1=0
依照程序结果分析:
当Arrays.asList(param)的param参数是基本类型的数组时,方法返回值的size总是1
当Arrays.asList(param)的param参数是基本类型对应的对象类型的数组时,方法返回值的size是我们期待的结果
当Arrays.asList(param)的param参数是String类型的数组时,方法返回值的size是我们期待的结果
当Arrays.asList(param)的param参数是自定义对象类型的数组时,方法返回值的size是我们期待的结果
结论:
1.当Arrays.asList(param)的param参数是基本类型的数组时,方法返回值的size总是1
2.当Arrays.asList(param)的param参数不是基本类型的数组时,方法返回值的size是我们期待的结果(不是基本类型包括String类型,对象类型,基本类型对应的对象类型)
所以,asList源码中T是对象类型时,返回结果才是我们期待的结果
public static <T> List<T> asList(T... a) {
return new ArrayList<T>(a);
}