Java Object类型能不能强制转化为值类型

来源:互联网 发布:小区物业管理系统源码 编辑:程序博客网 时间:2024/05/17 09:28
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中测试的时候这段代码能够运行而打包以后就不能运行了?(使用的是Java8)

原创粉丝点击