首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >集合到集合时的ClassCastException

集合到集合时的ClassCastException
EN

Stack Overflow用户
提问于 2019-06-21 01:43:53
回答 1查看 286关注 0票数 -2

我正在使用下面这段代码体验一个ClassCastException。

代码语言:javascript
复制
Set<Long> purchaseIds = confirmationCodeToPurchase
                          .entrySet()
                          .stream()
                          .map(Map.Entry::getValue)
                          .map(purchase -> (Long)purchase.getPurchaseId())
                          .collect(Collectors.toSet()))

confirmationCodeToPurchase是从确认码(字符串)到购买类型的映射。

我只提取地图的值(购买),获取每个值的purchaseId,并将它们放入一个集合中。

我得到了这个错误:

代码语言:javascript
复制
java.lang.ClassCastException: java.lang.Long cannot be cast to Purchase 

它出错的那条线是收集线。.collect(Collectors.toSet()))

EN

回答 1

Stack Overflow用户

发布于 2019-06-21 01:52:34

从您的错误描述看,您的方法purchase.getPurchaseId()返回了一个不属于Long类型的对象。这就是为什么你会得到一个类类型转换异常。您可以从此方法的返回值生成Long对象,而不是强制转换,前提是它是String或整数类型。

替换

.map(purchase -> (Long)purchase.getPurchaseId())

使用

.map(purchase -> Long.valueOf(purchase.getPurchaseId()))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56691345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档