当前位置:  开发笔记 > 编程语言 > 正文

编组时如何防止JAXB绑定@XmlRootElement的超类方法?

如何解决《编组时如何防止JAXB绑定@XmlRootElement的超类方法?》经验,为你挑选了2个好方法。

我有一个注释为@XmlRootElementwith的类@XmlAccessorType(XmlAccessType.NONE).我遇到的问题是,当我不希望它们被绑定时,超类的方法被绑定,并且无法更新类.我希望有一个注释可以放在根元素类上以防止这种情况发生.

例:

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class Person extends NamedObject {

    @XmlElement
    public String getId() { ... }

}

我希望,只有注释的方法@XmlElementPerson会被束缚和整理,但超类的方法都是约束,也是如此.结果XML然后有太多的信息.

如何在不必注释超类本身的情况下阻止超类的方法被绑定?



1> benvolioT..:

根据这篇StackOverflow帖子: 我如何忽略超类?

JAX-B无法在不修改超类的情况下忽略超类.引用该帖子的相关部分:

Update2:我在java.net上发现了 一个类似问题的线程.该线程产生了一个增强请求,该请求被标记为另一个问题的副本 ,从而产生了@XmlTransient注释.对这些错误报告的评论让我相信这在目前的规范中是不可能的.



2> ivan_ivanovi..:

只需添加

@XmlAccessorType(XmlAccessType.NONE)

在每个超类声明(和类本身)前面.

在你的情况下:

@XmlAccessorType(XmlAccessType.NONE)
class NamedObject{
    [ ... ]
}

请记住,必须为每个超类完成此操作,在处理大型类依赖树时经常会忘记它.

当然,接口不需要任何JAXB注释.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有