Autoboxing似乎归结为我可以写:
Integer i = 0;
Run Code Online (Sandbox Code Playgroud)
代替:
Integer i = new Integer(0);
Run Code Online (Sandbox Code Playgroud)
因此,编译器可以自动将基元转换为Object.
这是个主意吗?为什么这很重要?
我有一个小java文件给出如下.
class abc{
public static void main(String args[]){
Object a= 9;
int b= (int)a;
System.out.print(b);
}
}
Run Code Online (Sandbox Code Playgroud)
它在cmd中编译时出错,但在Netbeans中没有.此外,当我用'(整数)a'替换'(int)a'时,它在cmd和Netbeans上编译并运行正常.
class abc{
public static void main(String args[]){
Object a= 9;
int b= (Integer)a;
System.out.print(b);
}
}
Run Code Online (Sandbox Code Playgroud)
这是什么原因,我该如何解决这个问题?
编辑:编译第一个代码时出现的错误是:
C:\Users\ANKIT.ANKITSHUBHAM-PC>javac abc.java
abc.java:4: inconvertible types
found : java.lang.Object
required: int
int b= (int)a;
^
1 error
Run Code Online (Sandbox Code Playgroud)
编辑:这个问题不是关于铸造.这是为什么当我使用'(int)'将对象转换为int时cmd和Netbeans的行为不同,但在使用'(Integer)'进行转换时表现相同.