ClassCastException при сборе для установки - PullRequest
0 голосов
/ 20 июня 2019

Я испытываю ClassCastException со следующим фрагментом кода.

Set<Long> purchaseIds = confirmationCodeToPurchase
                          .entrySet()
                          .stream()
                          .map(Map.Entry::getValue)
                          .map(purchase -> (Long)purchase.getPurchaseId())
                          .collect(Collectors.toSet()))

confirmationCodeToPurchase - это карта из кода подтверждения (Строка) в тип Покупки.

IЯ извлекаю только значения карты (покупки), получаю их идентификатор покупки и помещаю их в набор.

Я получаю эту ошибку:

java.lang.ClassCastException: java.lang.Long cannot be cast to Purchase 

и строкуна котором это ошибки является линией сбора..collect(Collectors.toSet()))

1 Ответ

1 голос
/ 20 июня 2019

Из вашего описания ошибки похоже, что ваш метод purchase.getPurchaseId() возвращает объект, который не имеет типа Long.Вот почему вы получаете исключение приведения класса.Вместо приведения вы можете построить объект Long из возвращаемого значения этого метода, предполагая, что это либо String, либо целочисленный тип.

Replace

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

с

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...