我从XSD(使用JAXB)进行代码生成.我有一个超类和几个子类.其中一个超类'属性(比如说prop),有类型A.我也有类型B extends A和C extends A(在XSD中定义).超类'模式定义了一个类型的元素A,它由子类继承.我想使用类型B而C不是A子类.
<xsd:complexType name="Superclass">
<xsd:sequence>
<xsd:element name="prop" type="A" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Subclass1">
<xsd:complexContent>
<xsd:extension base="Superclass"/>
<xsd:attribute name="someAttribute" type="xsd:string"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="Subclass2">
<xsd:complexContent>
<xsd:extension base="Superclass"/>
<xsd:attribute name="someOtherAttribute" type="xsd:int"/>
</xsd:complexContent>
</xsd:complexType>
Run Code Online (Sandbox Code Playgroud)
生成的Superclass.java将有List<A> prop.例如,我想prop同类型被覆盖List<B>在Subclass1.java与List<C>中Subclass2.java.主要目标是prop在超类中使用,但在子类中使用其他(兼容)类型.