加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

为什么此代码段不会出现Java Tutorials文档中所述的运行时错误?

发布时间:2020-12-15 04:37:44 所属栏目:Java 来源:网络整理
导读:public class Box { private Object object; public void set(Object object) { this.object = object; } public Object get() { return object; }} 参考官方Java教程文档和上面的代码片段中的这篇文章,我试图重现运行时错误.我的代码有什么问题,因为它没有
public class Box {
    private Object object;

    public void set(Object object) { this.object = object; }
    public Object get() { return object; }
}

参考官方Java教程文档和上面的代码片段中的这篇文章,我试图重现运行时错误.我的代码有什么问题,因为它没有产生任何运行时错误?

Since its methods accept or return an Object,you are free to pass in whatever you want,provided that it is not one of the primitive types. There is no way to verify,at compile time,how the class is used. One part of the code may place an Integer in the box and expect to get Integers out of it,while another part of the code may mistakenly pass in a String,resulting in a runtime error.

我写的代码.

public class Box {
    private Object obj;

    public void set(Object obj) {
        this.obj = obj;
    }
    public Object get() {
        return obj;
    }

    public static void main(String [] args) {
        Box g = new Box();
        System.out.println(g.get());
        g.set("hello again");
        System.out.println(g.get());
    }
}

解决方法

public static void main(String[] args) {
    Box g = new Box();

    g.set("hello again");
    Integer i = (Integer) g.get();

    System.out.println(i + 1);
}

此代码传入String,但尝试检索Integer.编译器无法检测到这将失败.在运行时它会抛出ClassCastException.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读