gpt4 book ai didi

java - JAXB 不调用 Setter 方法

转载 作者:数据小太阳 更新时间:2023-10-29 02:23:49 26 4
gpt4 key购买 nike

我不明白我做错了什么。我想使用 JAXB 解码一个 xml,但我注意到没有调用 setter 方法。我正在使用 Java 1.5。Attribute.java 类中的 Getters 和 Setters - 工作正常,但在 Configuration.java 类中 - Setter 方法不调用。你能告诉我哪里错了吗?

@XmlRootElement(name="configuration")
@XmlAccessorType(XmlAccessType.NONE)
public class Configuration {
public List< Configuration> getItems() {
return new ArrayList<Attribute>(getMap().values());
}

@XmlElement(name="attributes")
public void setItems(List<Attribute> attributes) {
getMap().clear();
for (Attribute attribute : attributes) {
getMap().put(attribute.getName(), attribute);
}
}

private Map<String, Attribute> map;

public Map<String, Attribute> getMap() {

if (map == null) {
map = new HashMap<String, Attribute>();
}
return map;
}
}

我的 XML 看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<attributes name="some_name" type="calculation" value="select ? from dual" priority="0"/>
</configuration>

最佳答案

如果 List 从 getter 返回,JAXB impl 将使用它来添加集合项,而不是创建一个新列表并通过 setter 设置它。

这样做的目的是让您有机会初始化最适合您的域模型的 List 的实现。

关于java - JAXB 不调用 Setter 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26664152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com