我使用这个模式通过JAXB生成一个java类。但是,生成的类不是抽象的。另外,当我包含实现类的绑定时,我无法声明该类是抽象的,因为对象工厂需要创建一个实例。我不完全理解这一点。有人能帮上忙吗?谢谢!
<xs:complexType name="AbstractClass" abstract="true">
<xs:complexContent>
<xs:extension base="someModel:BaseClass">
<xs:sequence>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>发布于 2011-10-26 14:31:25
IIRC抽象只是说,通常你不会实例化这个类,它应该只用于扩展。因此,抽象检查由JAXB决定,与语言级抽象类无关
发布于 2011-10-26 22:59:17
您应该会看到为抽象复杂类型创建的抽象类(参见下面的示例)。您能提供有关您的XML模式的更多细节吗?
inheritance.xsd
contactInfo是一个抽象的复杂类型。
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="contactInfo" abstract="true">
<xs:sequence/>
</xs:complexType>
<xs:complexType name="phoneNumber">
<xs:complexContent>
<xs:extension base="contactInfo">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>XJC调用
xjc -d out inheritance.xsdContactInfo
生成的ConactInfo类是抽象的:
package generated;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "contactInfo")
@XmlSeeAlso({
PhoneNumber.class
})
public abstract class ContactInfo {
}https://stackoverflow.com/questions/7899084
复制相似问题