我想将原语转换为字符串,我试过:
myInt.toString();
Run Code Online (Sandbox Code Playgroud)
这失败并出现错误:
int cannot be dereferenced
Run Code Online (Sandbox Code Playgroud)
现在,我得到的原语不是引用类型(即不是Object),所以不能有方法.然而,Java 5引入了自动装箱和拆箱(一个C#......我在C#中从未喜欢过,但这不是重点).因此,使用自动装箱,我希望上面的内容将myInt转换为Integer,然后调用toString().
此外,我相信C#允许这样的电话,除非我记错了.这只是Java自动装箱/拆箱规范的一个不幸的缺点,还是有充分的理由呢?
public class Test {
static void test(Integer x) {
System.out.println("Integer");
}
static void test(long x) {
System.out.println("long");
}
static void test(Byte x) {
System.out.println("byte");
}
static void test(Short x) {
System.out.println("short");
}
public static void main(String[] args) {
int i = 5;
test(i);
}
}
Run Code Online (Sandbox Code Playgroud)
输出值为"long".
只能告诉我它为什么不是"整数",因为在Java中,int值应该是自动装箱的.