在水木上看到的問題
int[] intArray = new int[]{1, 2, 3, 4};
List>Integer< list = new ArrayList>Integer<();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
List listFromArray = Arrays.asList(intArray);
System.out.println(listFromArray);
System.out.println(list);
輸出結果是
[[I@c17164]
[1, 2, 3, 4]
也就是說Arrays.asList()并沒有返回一個{1,2,3,4}的List
原因在于,JDK5中asList接受變長參數(shù)表了,把intArray作為單獨的參數(shù)傳遞給asList方法的時候,編譯器會把它當作一個Object處理,于是返回了只有一個元素的List,而這個元素應該就是指向int[]的引用。
解決方法之一是把intArray聲明為Integer[],即
Integer[] intArray = new Integer[]{new Integer(1), new Integer(2), new Integer(3), new Integer(4)};
List>Integer< listFromArray2 = Arrays.asList(intArray2);
System.out.println(listFromArray2);
這樣就能看到預期結果了