小编典典

如何忽略超类?

java

我正在尝试为java.util.loggingapi
编写Web服务。因此,我编写了一个MyLogRecord类,该类继承自LogRecord。我用JAX-
B注释对此类进行了注释,包括,@XmlAccessorType(XmlAccessType.NONE)因此它将忽略未注释的字段和属性。当我启动tomcat时,出现错误,java.util.logging.Level并且其他java.util.logging类没有默认的构造函数,但是没有带注释的方法对Level类或任何其他java.util.logging类进行任何引用。这些由父类引用。

我的子类具有需要定义的所有内容。如何使JAX-B完全忽略父类?

更新:我在此找到,建议修改父类。这显然是不可能的,因为我正在扩展java.util课程。有没有不修改超类就可以做到这一点的方法?

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


阅读 209

收藏
2020-11-16

共1个答案

小编典典

您需要标记父类@XmlTransient。由于父类位于JRE中,并且您无法对其进行修改,因此需要备用机制。

EclipseLink JAXB(MOXy)实现提供了一种将元数据表示为XML的方式,您可以使用:

http://wiki.eclipse.org/EclipseLink/Examples/MOXy/EclipseLink-
OXM.XML

您可以使用批注指定一些元数据,其余的作为XML。您的文档如下所示:

<java-types>

    <java-type name="java.util.logging.LogRecord" xml-transient="true"/>

</java-types>
2020-11-16