我想将原语转换为字符串,我试过了:
myInt.toString();
这失败并出现错误:
int cannot be dereferenced
现在,我知道原语不是引用类型(即,不是对象),因此不能有方法。然而,Java 5 引入了自动装箱和拆箱(就像 C# 一样……我在 C# 中从来不喜欢它,但这无关紧要)。因此,通过自动装箱,我希望上面将 myInt 转换为 Integer,然后对其调用 toString()。
此外,我相信 C# 允许这样的调用,除非我记错了。这只是 Java 自动装箱/拆箱规范的一个不幸缺陷,还是有充分的理由?
最佳答案
Java 自动装箱/拆箱并没有达到允许您取消引用原语的程度,因此您的编译器会阻止它。你的编译器仍然知道 myInt
作为一个原语。在 jcp.org 上有一篇关于此问题的论文.
自动装箱主要在赋值或参数传递期间有用——允许您将原语作为对象传递(反之亦然),或将原语分配给对象(反之亦然)。
所以不幸的是,你必须这样做:(感谢 Patrick,我改用你的方式)
Integer.toString(myInt);
关于java - 为什么 Java 自动装箱不扩展到自动装箱类型的方法的方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4242/