Java 如何只告诉XSD中的某些类从提供的接口inheirt?

Java 如何只告诉XSD中的某些类从提供的接口inheirt?,java,jaxb,jaxb2,jaxb2-basics,Java,Jaxb,Jaxb2,Jaxb2 Basics,我发现其他一些问题以不同的方式问这个问题,但这些问题的答案都不起作用。它们所指的站点要么已经死了,要么不适合JAXB2 我需要的是多个生成的类从公共接口继承,因为它们都有一个.getName()方法 对于每种类型,block I都不必有一个巨大的if(o instanceof XXX),而只需对这个常见的接口进行测试,方法是对它进行强制转换并调用.getName() 这是我的界面 package com.mycompany; public interface Nameable { pu

我发现其他一些问题以不同的方式问这个问题,但这些问题的答案都不起作用。它们所指的站点要么已经死了,要么不适合JAXB2

我需要的是多个生成的类从公共接口继承,因为它们都有一个
.getName()
方法

对于每种类型,block I都不必有一个巨大的
if(o instanceof XXX)
,而只需对这个常见的
接口进行测试,方法是对它进行强制转换并调用
.getName()

这是我的界面

package com.mycompany;

public interface Nameable
{
    public String getName();
}
下面是我添加到.xjb绑定文件中的内容

<jxb:bindings version="2.1"
          xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
          xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
          xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
          xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"
          jxb:extensionBindingPrefixes="xjc inheritance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"

...

<jxb:bindings node="//xsd:element[@name='container']">
  <inheritance:implements>com.mycompany.Nameable</inheritance:implements>
</jxb:bindings>
将此界面添加到列表中的魔法咒语是什么?


<jxb:bindings node="//xsd:element[@name='container']">
  <inheritance:implements>com.mycompany.Nameable</inheritance:implements>
</jxb:bindings>
com.mycompany.Nameable
需要看起来像

<jxb:bindings node="//xsd:element[@name='container']">
  <jxb:class/>
  <inheritance:implements>com.mycompany.Nameable</inheritance:implements>
</jxb:bindings>

com.mycompany.Nameable

一旦我添加了缺少的节,它就开始按预期工作了

我认为您应该自定义元素的复杂类型。正是这种类型实现了您的接口,因此它是放置自定义/
实现
的正确位置

<jxb:bindings node="//xsd:element[@name='container']">
  <jxb:class/>
  <inheritance:implements>com.mycompany.Nameable</inheritance:implements>
</jxb:bindings>