我正在使用下面的代码来体验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()))
答案 0 :(得分:1)
从错误描述中,您的方法purchase.getPurchaseId()
似乎返回的对象不是Long
类型。这就是为什么您会收到类强制转换异常的原因。可以使用此方法的返回值构建Long对象,而不是强制转换,前提是它是String或整数类型。
替换
.map(purchase -> (Long)purchase.getPurchaseId())
使用
.map(purchase -> Long.valueOf(purchase.getPurchaseId()))