【问题标题】:Java Stream: class java.util.LinkedHashMap cannot be cast to class RealmRoleJava Stream:类 java.util.LinkedHashMap 不能转换为类 RealmRole
【发布时间】: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 -&gt; realmRole.getName().equals("user")).forEach(System.out::println);时遇到错误?
  • 哦,是的,抱歉,我更新了问题
  • 认为你有一个List&lt;RealmRole&gt;,但实际上你没有。泛型只能在编译时确保类型安全,但我猜在运行时,您的请求的反序列化不会像您期望的那样工作,而不是将您的请求反序列化为List&lt;RealmRole&gt;,而是得到List&lt;LinkedHashMap&gt; :-)
  • 但是在请求之后,我得到了一个包含实体的有效列表。现在,即使我只执行一个简单的 for 循环(对于 RealmRole realmRole: realmRoleList),也会发生错误。看来您是对的,但列表看起来还不错
  • 我解决了它,@Smutje 是对的。它仍然让我感到困惑,但响应返回 RealmRole [ ] 而不是 List 但它在列表中反序列化并在我的代码中传递。

标签: java spring spring-boot stream java-stream


【解决方案1】:

在最后使用这个 'collect(Collectors.toList())' 将结果转换回列表。

【讨论】:

  • 我已经尝试过了,但它解决了同样的错误。所以我已经分流看是不是某个阶段有问题
猜你喜欢
  • 2022-01-14
  • 2021-04-22
  • 2021-03-03
  • 1970-01-01
  • 2015-04-30
  • 2014-02-08
  • 2020-09-07
  • 2019-05-17
相关资源
最近更新 更多