Java JAXB unmarshaling Enum

时间:2017-03-28 00:38:54

标签: java xml enums jaxb

我的枚举类型ProductType正确保存为XML,但打开文件时并不想解组。

我制作了EnumAdapter:

public class EnumAdapter extends XmlAdapter<String, ProductType>
{
    @Override
    public ProductType unmarshal(String value) throws Exception {
        try {
            return ProductType.valueOf(value);
        }
        catch(Exception e) {
            throw new JAXBException(e);
        }
    }

    @Override
    public String marshal(ProductType value) {
        return value.toString();
    }

}

我的产品类:

public class Product {

    private final IntegerProperty ilosc; //quantity
    private final StringProperty nazwa;  //name
    private final ObjectProperty<ProductType> typ; //type
    private final BooleanProperty dostepnosc;

    public Product()
    {
        this(null, 0, ProductType.ALKOHOL, true);
    }


    public Product(String nazwa, int ilosc, ProductType typ, boolean dostepnosc) {
        this.nazwa = new SimpleStringProperty(nazwa);
        this.ilosc = new SimpleIntegerProperty(ilosc);
        this.typ = new SimpleObjectProperty<>(typ);
        this.dostepnosc = new SimpleBooleanProperty(dostepnosc);
    }
.
.
.
@XmlJavaTypeAdapter(EnumAdapter.class)
    public ProductType getTyp() {
        return typ.get();
    }

在我的应用程序枚举后打开XML总是设置为默认构造函数的值(这是ALCOHOL,如果我更改它,枚举设置为它是什么)。我也知道EnumAdapter的编组工作正常,我可以把它改成我想要的任何东西。请帮忙。

1 个答案:

答案 0 :(得分:0)

我解决了,我错过了正确的设置功能:

public void setTyp(ProductType type){
        this.typ.setValue(type);