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也没问题)

目录
相关文章
|
18天前
|
存储 Java 编译器
深入理解 Java 泛型和类型擦除
【4月更文挑战第19天】Java泛型是参数化类型,增强安全性与可读性,但存在类型擦除机制。类型擦除保证与旧版本兼容,优化性能,但也导致运行时无法访问泛型信息、类型匹配问题及数组创建限制。为应对这些问题,可使用Object类、instanceof运算符,或借助Guava库的TypeToken获取运行时类型信息。
|
7天前
|
Java
Java String类型转换成Date日期类型
Java String类型转换成Date日期类型
|
7天前
|
关系型数据库 MySQL Java
Java时间转换为MySQL中的INT类型时间戳
Java时间转换为MySQL中的INT类型时间戳
|
8天前
|
Java 编译器
【Java探索之旅】解密Java中的类型转换与类型提升
【Java探索之旅】解密Java中的类型转换与类型提升
16 0
|
11天前
|
安全 Java 编译器
【JAVA】泛型和Object的区别
【JAVA】泛型和Object的区别
|
11天前
|
安全 Java 程序员
Java 泛型类型:变幻中的不变性
【4月更文挑战第21天】
6 1
Java 泛型类型:变幻中的不变性
|
12天前
|
XML SQL 前端开发
【Java】实体字段传参类型线上问题记录
【Java】实体字段传参类型线上问题记录
22 1
|
14天前
|
存储 Java 开发者
Java Object类
Java Object类
14 0
|
14天前
|
存储 Java
JAVA变量类型
JAVA变量类型
16 0
|
19天前
|
存储 算法 安全
什么是Java泛型类型?
【4月更文挑战第13天】
17 0
什么是Java泛型类型?