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