微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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:\Users\ANKIT.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类型的变量中

现在,在下一行,Object不能在Java 6中转换为int,因为它实际上是一个整数,而不是一个原始类型.然而,它可以转换为Integer,然后auto-unBoxing负责从该整数提取一个int.

现在到“为什么在Netbeans中工作?”

Netbeans使用不同的编译器(见here),而不是命令行javac.它可能以与javac不同的方式表现,并且更容忍 – 也许当它遇到尝试将其转换为int时,它会自动解包整数.

在另一个答案中,Java 7在这种情况下支持自动拆箱,因此可能的原因是您的命令行javac来自Java 6,而Netbeans使用Java 7编译器(或更高版本).

原文地址:https://www.jb51.cc/java/125558.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐