java - 使用原始包装器进行 Java 强制转换 - Java 6 和 Java 8 之间的区别
问题描述
我遇到了这段遗留代码(Java 6)(这是指出我的问题的简化版本):
Object o;
o = new Long (3L);
Double d;
d = (Double) o;
上面的这个显然不起作用,因为包装器只能转换为相应的原始类型。我通过以下方式解决了这个问题:
Long toConvert = (Long) o;
String convert = toConvert.toString();
d= Double.parseDouble(convert);
它工作正常,除了丑陋。我尝试了另一种解决方案:
d = (double) o;
我也工作得很好,但是当我在新的 Java 8 项目中检查这个解决方案(纯粹的好奇心)时,我得到了
java.lang.ClassCastException:java.lang.Long 不能转换为 java.lang.Double
在原始包装器方面,Java 6 与 Java 8 有什么不同,可以解释观察到的行为吗?
解决方案
推荐阅读
- git - 如何通过 Terraform 下载 git 代码?
- javascript - PHP如何用值替换html标签
- c# - 我在 Xamarin.forms 中遇到数据绑定问题
- google-cloud-storage - NextJs,谷歌云存储,在内存中上传/下载对象的问题
- android - Android ML Kit 无法标记图像
- javascript - { 错误:整数的无效输入语法:“未定义”,尝试更新后端列时
- python - 如何通过检查长度作为字典列表中的元素数来打印字符串
- java - Java 使用 .split 将字符串数组拆分为更小的数组会创建重复的数组名称吗?
- sql - cosmos db(document db) SQL API 中的分层查询
- python - 涉及将填充放在哪里的广播问题