Java JAXB如何将整数解组到其对应的枚举中?
我有一门课:Java JAXB如何将整数解组到其对应的枚举中?,java,xml,enums,jaxb,unmarshalling,Java,Xml,Enums,Jaxb,Unmarshalling,我有一门课: @Data @XmlRootElement(name="root") @XmlAccessorType(XmlAccessType.FIELD) public class rootClass { @XmlElement(name="test") public FeFiFo test; } enum FeFiFo { FE, FI, FO, } 和一个XML: <root> <test>1</test>
@Data
@XmlRootElement(name="root")
@XmlAccessorType(XmlAccessType.FIELD)
public class rootClass
{
@XmlElement(name="test")
public FeFiFo test;
}
enum FeFiFo
{
FE,
FI,
FO,
}
和一个XML:
<root>
<test>1</test>
</root>
1.
如何将XML解组到类中,使
test
属性成为FeFiFo.FI?当前为空。您应该使用XmlJavaTypeAdapter
rootClass
@Data
@XmlRootElement(name="root")
@XmlAccessorType(XmlAccessType.FIELD)
public class rootClass
{
@XmlJavaTypeAdapter(EnumAdapter .class)
@XmlElement(name="test")
public FeFiFo test;
}
适配器
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class EnumAdapter extends XmlAdapter<String, FeFiFo>
{
public FeFiFo unmarshal(String value) {
//if()
//else if()
//else
return FeFiFo.FE;
}
public String marshal(FeFiFo value) {
//if()
//else if()
//else
return "0";
}
}
import javax.xml.bind.annotation.adapters.XmlAdapter;
公共类EnumAdapter扩展了XmlAdapter
{
公共FeFiFo解组(字符串值){
//if()
//else if()
//否则
返回FeFiFo.FE;
}
公共字符串封送处理(FeFiFo值){
//if()
//else if()
//否则
返回“0”;
}
}
我非常喜欢这个。谢谢有没有办法让它通用?我有多个枚举。(我对此感到奇怪,但无法让解组器
调用E.values()[value]
。也许您可以使用反射来检查枚举,以便只有一个xmladapter,但我以前从未尝试过。