java.util.Arrays.asList的bug。

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

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

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


          網站導航:
           
          主站蜘蛛池模板: 民权县| 镶黄旗| 德州市| 申扎县| 渝北区| 蚌埠市| 宽城| 怀化市| 青河县| 伊金霍洛旗| 旌德县| 浮梁县| 永城市| 六安市| 剑河县| 麻栗坡县| 子长县| 和政县| 洛南县| 四川省| 保康县| 义马市| 太仓市| 宁蒗| 阳西县| 兰溪市| 临城县| 理塘县| 秦皇岛市| 柞水县| 寿阳县| 长葛市| 吕梁市| 鹿邑县| 五峰| 襄垣县| 安吉县| 滨州市| 永昌县| 富民县| 开江县|