JAXB を使用して XML ファイルからコンテンツを取り込みたいクラスがあります。私の XML ファイルは次のようになります。
<root>
<mylist>
<item id="1">First Item</item>
<item id="2">Second Item</item>
</mylist>
</root>
私の JAXB アノテーション付きクラスは次のようになります。
@XmlRootElement
class MyParentClass {
// I always populate this with a TreeSet
private Set<MyFieldItem> items;
public void setItems(Set<MyFieldItem> items) {
this.items = items;
}
@XmlElementWrapper("mylist") @XmlElement("item")
public Set<MyFieldItem> getItems() {
return items;
}
}
class MyFieldItem implements Comparable<MyFieldItem> {
private Integer id;
private String value;
public void setId(Integer id) {
this.id = id;
}
@XmlAttribute
public Integer getId() {
return id;
}
public void setValue(String value) {
this.value = value;
}
@XmlValue
public String getValue() {
return value;
}
public int compareTo(MyfieldItem o) {
return this.id.compareTo(o.getId());
}
}
この配置はオブジェクトを XML に正しくシリアル化することがわかりましたが、それを元に変換しようとすると、使用するTreeSetがHashSetになります。
理論的には、私のコレクションは TreeSet に修正できますが (問題は解決します)、JAXB を正しく構成し、そのロジックを別の場所に延期したいと考えています。代わりに TreeSet を構築するように JAXB に指示するにはどうすればよいですか?