Posted on 2007-07-03 14:55
bluoy 閱讀(890)
評論(0) 編輯 收藏
java.util.Arrays.asList的BUG
jdk 1.4對java.util.Arrays.asList的定義,函數參數是Object[]。所以,在1.4中asList()并不支持基本類型的數組作參數。
jdk 1.5中,java.util.Arrays.asList的定義,函數參數是Varargs, 采用了泛型實現。同時由于autoboxing的支持,使得可以支持對象數組以及基本類型數組。
但在使用過程中發現jdk1.5中存在一個BUG。就是等參數為基本類型的數組時,函數的行為發生了變異:它不是把這個數組轉換為List,而是把這個數組整體作為返回List中的第一個元素,要取得轉換后的結果,得首先get(0)才行。
到網上google了一下,Sun好像認為這并不是個問題。理由如下:
Arrays.asList is now a vararg method, and the behavior is as intended: asList(int[] ...)
The Java generics implementation does not support non-reference type parameters.
This is all standard Java 5.0 stuff.
URL:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6353471雖然如此,但因此函數的行為就可能產生了歧義,對調用者還是會產生誤導的,我認為這終歸還應該是個問題的,如能解決是最好的了。