抽象类上的@XmlJavaTypeAdapter?

时间:2014-02-14 11:39:28

标签: java jaxb

JAXB抱怨X类“ ...没有no-arg默认构造函数。

在我的案例中,X类是数十个自动生成的最终类中的一个,它们确实没有no-arg默认构造函数。它也恰好扩展了一个抽象类,如果我愿意,我可以修改它。我想在抽象类上放一个@XmlJavaTypeAdapter注释,但这不起作用,我不确定它是否有意义。什么是最佳解决方案或解决方法?

编辑:要清楚。我无法修改生成的类。

3 个答案:

答案 0 :(得分:1)

您可以在抽象超类上添加XmlAdapter(请参阅http://blog.bdoughan.com/2012/01/jaxb-and-inhertiance-using-xmladapter.html)。值得注意的是,XmlAdapter仅适用于引用该类的映射字段/属性,而不适用于将该类的实例编组为根对象的情况。您也无法在传递给JAXBContext的引导类的数组中包含该类。

答案 1 :(得分:0)

在这个类中放置一个no-arg构造函数,如下所示:

public ClassName(){
}

答案 2 :(得分:0)

通常情况下(因为框架)你需要一个no-args构造函数。例如,在使用JAXB时,它实例化的bean需要一个no-args构造函数。我经常做的是:

public MyClass(String something) {
    // do something
}

public MyClass() {
    // for frameworks!
}

这当然要求你不要把你的逻辑放在构造函数中,但这几乎总是可行的。

PS:一些框架实际上有注释允许@PostConstruct调用。