JAXB:编写处理接口的多个实现的通用XmlAdapter:检索构造参数

时间:2016-06-17 10:19:51

标签: java xml jaxb jaxb2

我在jar Animal中有一个不依赖于JAXB的接口Cat和许多实现(DogSheepanimals-core) 。然后我有一个jar animals-jaxb,为这些类提供JAXB绑定。

我想写的是:

public class AnimalAdapter extends XmlAdapter<String, Animal> {

    @Override
    public Animal unmarshal(String content) {
        switch (fieldClass) {
            case Cat.class: return new Cat(content);
            case Dog.class: return new Dog(content);
            case Sheep.class: return new Sheep(content);
            default: throw new IllegalStateException(
                    "propertyClass (" + propertyClass + ") not supported");
        }
    }

    @Override
    public String marshal(Animal a) {
        return a.toContent();
    }

}

这将使我的动物框架的用户很容易配置:

public class Person {
    @XmlJavaTypeAdapter(AnimalAdapter.class)
    private Cat cat; // fieldClass is Cat.class
    @XmlJavaTypeAdapter(AnimalAdapter.class)
    private Dog dog; // fieldClass is Dog.class
}

上面代码的问题是缺少fieldClass:对于XmlAdapter实例,我找不到一种方法来检索它所绑定的字段类型。这可能吗?

0 个答案:

没有答案