Java Object类型与值类型之间的相互转化-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

Java Object类型与值类型之间的相互转化

简介: 值类型能不能和Object类型相互转化?来看看吧,请教一个非常奇怪的问题。
public static void main(String[] args) {
    boolean var = true;
    foo((Object)var);
}
     
public static void foo(Object value) {
    boolean var = (boolean)value;
    System.out.println(var);
}

如上方代码所示,函数foo会传递一个Object类型的变量value过来(传递进来的值确实是布尔值,不要问我为什么不直接在foo函数中将Object改为boolean,程序确实必须写Object,并且这个问题不在今天的讨论范围),然后同事在函数中将其强制转换为boolean类型,在eclipse中运行一段时间也确实没什么问题,可今天打包之后发现程序运行到这一行的时候抛了异常,Object cannot be cast to boolean.

我突然意识到,Object类型的value是一个对象,而boolean是值类型,于是我把boolean换成其对应的包装器类型Boolean,问题完美解决。

虽然问题是解决了,但是还是不明白为什么在eclipse中测试的时候这段代码能够运行而打包以后就不能运行了?(项目上使用的是Java7,我自己在个人电脑上使用了Java8也没问题)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章