【发布时间】:2009-09-06 17:30:07
【问题描述】:
我正在尝试为java.util.logging api 编写网络服务。所以我写了一个继承自LogRecord的类MyLogRecord。我用 JAX-B 注释对这个类进行了注释,包括 @XmlAccessorType(XmlAccessType.NONE),因此它会忽略未注释的字段和属性。当我启动 tomcat 时,我收到 java.util.logging.Level 和其他 java.util.logging 类没有默认构造函数的错误,但我的注释方法都没有引用 Level 类或任何其他 java.util.logging 类。这些被父类引用。
我的子类有它需要定义的一切。如何让 JAX-B 完全忽略父类?
更新:找到another post on this,提示修改父类。这显然是不可能的,因为我正在扩展 java.util 类。有没有办法在不修改超类的情况下做到这一点?
Update2:我发现a thread on java.net 存在类似问题。该线程产生了一个enhancement request,它被标记为another issue 的重复,这导致了@XmlTransient 注释。这些错误报告中的 cmets 让我相信这在当前规范中是不可能的。
【问题讨论】:
-
为什么不使用组合而不是继承并包装 LogRecord 而不是扩展它?
-
不得不来回转换似乎比这更笨拙。我认为这不应该是不可能的。我最担心的是为什么 XmlAccessType.NONE 不影响超类。