【问题标题】:Yaml file reading object ambiguityYaml 文件读取对象歧义
【发布时间】:2023-03-26 02:14:01
【问题描述】:

我对从 yaml 反序列化的对象有疑问。我做了一组类来对 yaml 文件进行建模,因此当我读取文件时,我可以将内容映射到一个对象中。现在,问题是我有相同的对象,一个在列表中,一个在列表中,但是对于运行时环境,它们彼此不同,裸相等而不是属性比较。这是代码的片段。非常感谢。

public String changeKey(String richiedente, String apikey) throws IOException {

    ObjectMapper mapper= new ObjectMapper(new YAMLFactory());

    Yaml yaml = mapper.readValue(new File(domainYaml), new TypeReference<Yaml>() {});

    String newApiKey = null;

    YamlSistRichiedenti sistemaRichiedenteOld = new YamlSistRichiedenti(richiedente, apikey);

    System.out.println(yaml.server.sistemiRichiedenti.contains(sistemaRichiedenteOld));
    System.out.println(yaml.server.sistemiRichiedenti.get(0).equals(sistemaRichiedenteOld));
    System.out.println(yaml.server.sistemiRichiedenti.get(0).apikey.equals(sistemaRichiedenteOld.apikey));
    System.out.println(yaml.server.sistemiRichiedenti.get(0).richiedente.equals(sistemaRichiedenteOld.richiedente));

这应该在所有 4 个打印示例中都打印为 true,但等于并包含 print false。

这里是控制台打印

【问题讨论】:

  • 欢迎来到 SO!事实上,这个问题不能让我们帮助您解决问题。它缺少一个清晰的问题陈述——你展示了一些代码,但没有告诉我们它做了什么(而不是它应该做什么)。我也不太理解您文本中的问题陈述。然后,Yaml 是来自 SnakeYaml 的主类,但您似乎已经创建了一个具有该名称的自己的类,这令人困惑,您应该更改它,以便更清楚您在做什么。最后,您应该创建一个MCVE,以便我们可以重现您正在做的事情。

标签: java yaml equals contains


【解决方案1】:

我修复了覆盖 equals 方法的问题,然后 contains 方法又开始工作了。

【讨论】:

    猜你喜欢
    • 2018-08-08
    • 2023-03-03
    • 2011-10-15
    • 1970-01-01
    • 2015-09-05
    • 2020-06-21
    • 2019-01-09
    • 2015-04-22
    • 1970-01-01
    相关资源
    最近更新 更多