Поток Java: класс java.util.LinkedHashMap не может быть приведен к классу RealmRole

#java #spring #spring-boot #stream #java-stream

#java #spring #spring-boot #поток #java-поток

Вопрос:

В моем проекте springboot у меня есть модуль с именем

Модель

Здесь у меня есть класс RealmRole:

 public class RealmRole {

private String id;
private String name;

public RealmRole() {
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

@Override
public String toString() {
    return "RealmRole{"  
            "id='"   id   '''  
            ", name='"   name   '''  
            '}';
}
  

}

Из запроса я получаю

 List<RealmRole>
  

Теперь я хочу отфильтровать RealmRole по имени:

 realmRoleList.stream().filter(realmRole.getName().equals("user")).forEach(sout)
  

Это вызывает ошибку:

Сообщение: класс java.util.LinkedHashMap не может быть приведен к классу de.test.userregistration.model.RealmRole (java.util.LinkedHashMap находится в модуле java.base загрузчика ‘bootstrap’; de.test.userregistration.model.RealmRole находится в неназванном модуле загрузчика ‘app’)

Даже если я просто попытаюсь:

realmRoleList.stream().forEach(sout) Я получаю ту же ошибку.

Я уже прочитал несколько вопросов, но не смог найти ответ на эту проблему. Я уже удалил devtools из pom.xml потому что я читал, что это может привести к проблемам с загрузчиком классов.

Комментарии:

1. Вы имели в виду, что получаете ошибку при использовании realmRoleList.stream().filter(realmRole -> realmRole.getName().equals("user")).forEach(System.out::println); ?

2. О да, извините, я обновил вопрос

3. Вы думаете , что у вас есть List<RealmRole> , но на самом деле это не так. Дженерики могут обеспечить безопасность типов только во время компиляции, но я предполагаю, что во время выполнения десериализация вашего запроса работает не так, как вы ожидаете, и вместо десериализации вашего запроса в a List<RealmRole> вместо этого вы получаете a List<LinkedHashMap> 🙂

4. Но после запроса я получаю действительный список с сущностями. Теперь ошибка возникает, даже если я выполняю простой цикл for (для RealmRole realmRole: realmRoleList ). Кажется, вы правы, но список выглядит нормально

5. Я решил это, и @Smutje был прав. Это все еще сбивает меня с толку, но ответ возвращает RealmRole [ ] вместо списка, но он десериализуется в списке и передается в моем коде как таковой.

Ответ №1:

Используйте это ‘collect(коллекторы.ToList())’ в конце, чтобы преобразовать результат обратно в список.

Комментарии:

1. Я уже пробовал это, но он разрешается с той же ошибкой. Для этого я разделил поток, чтобы увидеть, есть ли проблема на определенном этапе