问题

我想将原语转换为字符串,我尝试了:

 myInt.toString();
 

这失败并出现错误:

 int cannot be dereferenced
 

现在,我得到原语不是引用类型(即,而不是对象),因此无法有方法.但是,Java 5引入了autobout和unbout(la C#....我从未在C#中喜欢这个,但这在点旁边).所以使用autobout,我希望上面的myInt转换为Integer,然后调用toString().

此外,我相信C#允许这样的调用,除非我记得错误.这只是Java的autobout / unbout规范的一个不幸缺陷,还是有很好的理由吗?

  最佳答案

Java autobouck / unbouck不允许您取消引用原始,所以编译器防止它.您的编译器仍然知道myInt为原始.在 jcp.org 有关于这个问题的论文.

自动拳击在分配或参数传递期间主要有用 —— 允许您将原语作为对象传递(或反之亦然),或将原语分配给对象(或反之亦然)。

所以不幸的是,你必须这样做:(kudos Patrick,我转向你的方式)

 Integer.toString(myInt);
 

  相同标签的其他问题

javaautoboxing