【发布时间】:2021-02-27 12:25:12
【问题描述】:
在我的 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 在加载器“bootstrap”的模块 java.base 中; de.test.userregistration.model.RealmRole 在未命名的模块中 加载程序“应用程序”)
即使我只是尝试:
realmRoleList.stream().forEach(sout) 我得到同样的错误。
我已经阅读了一些问题,但我找不到这个问题的答案。 我已经从 pom.xml 中删除了 devtools,因为我读到这可能会导致类加载器问题。
【问题讨论】:
-
你的意思是你在使用
realmRoleList.stream().filter(realmRole -> realmRole.getName().equals("user")).forEach(System.out::println);时遇到错误? -
哦,是的,抱歉,我更新了问题
-
你认为你有一个
List<RealmRole>,但实际上你没有。泛型只能在编译时确保类型安全,但我猜在运行时,您的请求的反序列化不会像您期望的那样工作,而不是将您的请求反序列化为List<RealmRole>,而是得到List<LinkedHashMap>:-) -
但是在请求之后,我得到了一个包含实体的有效列表。现在,即使我只执行一个简单的 for 循环(对于 RealmRole realmRole: realmRoleList),也会发生错误。看来您是对的,但列表看起来还不错
-
我解决了它,@Smutje 是对的。它仍然让我感到困惑,但响应返回 RealmRole [ ] 而不是 List 但它在列表中反序列化并在我的代码中传递。
标签: java spring spring-boot stream java-stream