@XmlType
@XmlAccessorType(XmlAccessType.FIELD) // here I need this access
public class User implements Serializable
{
// ...
@XmlTransient
private Set<Values> values;
// ...
@XmlElement
private Set<History> getXmlHistory()
{
return new CustomSet<Values, History>(Values);
}
private void setXmlHistory(final Set<History> aHistory)
{
this.values = new HashSet<Values>();
}
}
当我在 Java 代码中创建用户对象并在创建 XML 之后,一切正常。
但是,当我尝试从 XML 中获取用户对象时,字段 values
始终为 null
。所以二传手不在这里工作。可能 setter 也需要一些注释?
XML 看起来像
<user>
...
<xmlHistory>
// ... record 1
</xmlHistory>
<xmlHistory>
// ... record 2
</xmlHistory>
</user>
最佳答案
我不认为这是一个 JAXB 问题,因为以下模型可以工作:
package forum10617267;
import java.io.Serializable;
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlType
@XmlAccessorType(XmlAccessType.FIELD) // here I need this access
public class User implements Serializable {
@XmlTransient
private Set<History> history = new HashSet<History>();
@XmlElement
private Set<History> getXmlHistory() {
return history;
}
private void setXmlHistory(final Set<History> aHistory) {
this.history = aHistory;
}
}
您看到的问题是您在 get/set 方法中的逻辑的结果。由于您的 values
字段未初始化,我不确定 CustomSet
将如何更新它。
package forum10617267;
import java.io.Serializable;
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlType
@XmlAccessorType(XmlAccessType.FIELD) // here I need this access
public class User implements Serializable {
@XmlTransient
private Set<Values> values;
@XmlElement
private Set<History> getXmlHistory() {
return new CustomSet<Values, History>(values);
}
private void setXmlHistory(final Set<History> aHistory) {
this.values = new HashSet<Values>();
}
}
关于java - JAXB,setter/getter 的注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10617267/