java.util.Arrays.asList的bug。

Posted on 2007-07-03 14:55 bluoy 阅读(887) 评论(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

虽然如此,但因此函数的行为就可能产生了歧义,对调用者还是会产生误导的,我认为这终归还应该是个问题的,如能解决是最好的了。

只有注册用户登录后才能发表评论。


网站导航: