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,但我以前从未尝试过。