#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>
, но на самом деле это не так. Дженерики могут обеспечить безопасность типов только во время компиляции, но я предполагаю, что во время выполнения десериализация вашего запроса работает не так, как вы ожидаете, и вместо десериализации вашего запроса в aList<RealmRole>
вместо этого вы получаете aList<LinkedHashMap>
🙂4. Но после запроса я получаю действительный список с сущностями. Теперь ошибка возникает, даже если я выполняю простой цикл for (для RealmRole realmRole: realmRoleList ). Кажется, вы правы, но список выглядит нормально
5. Я решил это, и @Smutje был прав. Это все еще сбивает меня с толку, но ответ возвращает RealmRole [ ] вместо списка, но он десериализуется в списке и передается в моем коде как таковой.
Ответ №1:
Используйте это ‘collect(коллекторы.ToList())’ в конце, чтобы преобразовать результат обратно в список.
Комментарии:
1. Я уже пробовал это, но он разрешается с той же ошибкой. Для этого я разделил поток, чтобы увидеть, есть ли проблема на определенном этапе