首页 文档 博客 资源 论坛 |
点点滴滴
访问地址:http://wangf.javaeedev.com » 复制 » 收藏 » 订阅
阅读文章
关于JDK5中vararg的一点研究
发表于08-06-30 01:37 | 阅读 743 | 评分 (暂无)

上两段代码:

  private String print(Object... values) {
    StringBuilder sb = new StringBuilder();
    for (Object o : values) {
      sb.append(o.toString())
        .append(" ");
    }
    return sb.toString();
  }
 

  public void testPrintMethod(PrintStream out) throws IOException {
    out.println(print(new Object[] {0, 2, 4, 6, 8, 10, 9, 7, 5, 3, 1}));
    out.println(print(new Integer[] {0, 2, 4, 6, 8, 10, 9, 7, 5, 3, 1}));
    out.println(print(new int[] {0, 2, 4, 6, 8, 10, 9, 7, 5, 3, 1}));
  }

这三个输出是否应该一样呢?
事实上结果是这样子的:

0 2 4 6 8 10 9 7 5 3 1
0 2 4 6 8 10 9 7 5 3 1
[I@149d886
最后一个int数组没能转换成Object数组,而是整体被转换成了一个Object。

我不知道为什么,java没有对成员进行Autoboxing,许是怕引起其他的混淆吧。
暂且记录下来。

评分
列出所有评论
cherami发表于08-07-30 07:48
JDK不应该对数组进行Autoboxing
1项,1页: 上一页 1 下一页
发表您的评论
自我介绍 »
等级:
搜索文章 »
文章分类 »
最新发表 »
最新评论 »