我正在使用下面这段代码体验一个ClassCastException。
Set<Long> purchaseIds = confirmationCodeToPurchase
.entrySet()
.stream()
.map(Map.Entry::getValue)
.map(purchase -> (Long)purchase.getPurchaseId())
.collect(Collectors.toSet()))
confirmationCodeToPurchase
是从确认码(字符串)到购买类型的映射。
我只提取地图的值(购买),获取每个值的purchaseId,并将它们放入一个集合中。
我得到了这个错误:
java.lang.ClassCastException: java.lang.Long cannot be cast to Purchase
它出错的那条线是收集线。.collect(Collectors.toSet()))
发布于 2019-06-21 01:52:34
从您的错误描述看,您的方法purchase.getPurchaseId()
返回了一个不属于Long
类型的对象。这就是为什么你会得到一个类类型转换异常。您可以从此方法的返回值生成Long对象,而不是强制转换,前提是它是String或整数类型。
替换
.map(purchase -> (Long)purchase.getPurchaseId())
使用
.map(purchase -> Long.valueOf(purchase.getPurchaseId()))
https://stackoverflow.com/questions/56691345
复制相似问题