java – 在cmd中编译但在Netbeans中错误
我有一个小的
java文件给出如下.
class abc{ public static void main(String args[]){ Object a= 9; int b= (int)a; System.out.print(b); } } 它在cmd中编译时出现错误,但在Netbeans中却不正确.另外,当我用'(整数)”替换'(int)”时,它会在cmd和Netbeans上编译并运行正常. class abc{ public static void main(String args[]){ Object a= 9; int b= (Integer)a; System.out.print(b); } } 这是什么原因,我该如何解决这个问题? 编辑:编译第一个代码时出现的错误是: C:UsersANKIT.ANKITSHUBHAM-PC>javac abc.java abc.java:4: inconvertible types found : java.lang.Object required: int int b= (int)a; ^ 1 error 编辑:这个问题不在于铸造.这是关于为什么当我使用'(int)’将对象转换为int时,cmd和Netbeans的行为是不同的,但是在使用'(整数)’时使用相同的方式. 解决方法
这里发生了什么?
Object a= 9; 是: > int,值为9 现在,在下一行,Object不能在Java 6中转换为int,因为它实际上是一个整数,而不是一个原始类型.然而,它可以转换为Integer,然后auto-unboxing负责从该整数提取一个int. 现在到“为什么在Netbeans中工作?” Netbeans使用不同的编译器(见here),而不是命令行javac.它可能以与javac不同的方式表现,并且更容忍 – 也许当它遇到尝试将其转换为int时,它会自动解包整数. 在另一个答案中,Java 7在这种情况下支持自动拆箱,因此可能的原因是您的命令行javac来自Java 6,而Netbeans使用Java 7编译器(或更高版本). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |