java.util.Arrays.asList的bug。

          Posted on 2007-07-03 14:55 bluoy 閱讀(892) 評論(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

          雖然如此,但因此函數的行為就可能產生了歧義,對調用者還是會產生誤導的,我認為這終歸還應該是個問題的,如能解決是最好的了。

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 密山市| 柏乡县| 宽城| 通道| 登封市| 卓尼县| 衡阳县| 苍南县| 石屏县| 许昌市| 特克斯县| 牟定县| 双桥区| 疏附县| 航空| 长岭县| 东丰县| 天台县| 高阳县| 湾仔区| 长顺县| 湘乡市| 青河县| 凌云县| 旌德县| 白沙| 新乡市| 根河市| 罗定市| 建昌县| 道孚县| 古田县| 喀喇| 长治市| 广州市| 托里县| 靖边县| 冀州市| 长子县| 新巴尔虎左旗| 雷波县|