微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java方法链接在单行上进行转换

我需要将两个值一起添加,并且它们都作为Longs存储在对象HashMap中.
这就是我想要做的,我的IDE说这是一个错误.

long total = currentRowContents.get("value_A").longValue() + currentRowContents.get("value_B").longValue();

我猜这不会工作,因为currentRowContents是一个HashMap类型的Object,因此从currentRowContents.get(…)返回的内容需要被转换为Long类型,然后我可以在它上面使用.longValue()方法.

我知道我可以通过将它们分成单独的语句并进行一些转换来解决问题.但我想知道是否有办法让上述工作不分裂,如果它确实需要铸造(我相信它确实如此)放在哪里?

编辑
并不是说它会改变任何东西,但对于那些想要了解更多的人来说,我收到的答案确实可以解决问题.但我使用的Hash Map是Object,Object类型,虽然它更像String,Object使用,它确实包含来自数据库的数据.不幸的是,我不能改变Hash Map,因为它来自一个我无法改变的专用构建框架.

解决方法

看起来你正在为你的地图使用 raw type.鉴于在您的问题中使用了longValue(),可以合理地假设Map的值为Long类型

泛型可用于消除铸造的需要

Map<String,Long> currentRowContents = new HashMap<String,Long>();

如果Map的源不在您的控制范围内,则需要进行强制转换

long total = ((Long)currentRowContents.get("value_A")).longValue() + 
                  ((Long)currentRowContents.get("value_B")).longValue();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐