我在从 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。
这里是控制台打印
最佳答案
我修复了重写 equals 方法,然后 contains 方法也再次开始工作。
关于java - Yaml文件读取对象歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55099255/