ClassCastException при преобразовании LinkedHashMap в общий c класс - PullRequest
0 голосов
/ 02 августа 2020

Рассмотрим следующий класс:

public class MsgReceiver<MSG> extends AbstractMsgReceiver<MSG> implements 
MsgReceiver<MSG> {

@KafkaListener( // necessary properties )
public void receiveMessage(@Headers Map<String, Object> headers, @Payload ConsumerRecord<String, 
Object> payload) {

    super.receiveMessage(headers,(MSG) (payload.value())); // line foobar
}

payload.value() имеет тип LinkedHashMap, и когда я использую этот класс, MSG может быть любым из моих пользовательских классов POJO. Я получаю ClassCastException при преобразовании из LinkedMashMap в мой класс POJO в строке foobar. Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

payload.value () возвращает объект-итератор. Это может быть проблема при приведении типов. Проверьте свой класс POJO.

0 голосов
/ 02 августа 2020

Попробуйте использовать картограф Джексона или любой картограф, я бы сказал. Я использую jackson mapper для слушателей очереди kafka, отлично работает. Подробности здесь

...