Java Stream:类 java.util.LinkedHashMap 无法转换为类 RealmRole

问题描述 投票:0回答:2

在我的 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,因为我读到这可能会导致类加载器问题。

java spring spring-boot stream java-stream
2个回答
0
投票

最后使用“collect(Collectors.toList())”将结果转换回列表。


0
投票

我遇到了这个问题,试图找到这个确切问题的答案,但找不到任何东西。所以我想我会用我的解决方案来回答这个问题。

当我将对象保存为 JSON,然后尝试从 Redis 检索 JSON 时,我遇到了这个问题。我认为 JSON 的类/类型无法确定,因此它被加载到 LinkedHashMap 中。我通过修改 ObjectMapper 的 Bean 解决了这个问题,这是 Jackson 用于序列化和反序列化的。

@Bean
public ObjectMapper objectMapper() {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);

    return objectMapper;
}

这样做的目的是在将 JSON 保存到 Redis 时添加类信息,以便从 Redis 检索数据时知道对象的类/类型。

© www.soinside.com 2019 - 2024. All rights reserved.