我使用此模式通过JAXB生成java类。但是,生成的类不是抽象的。此外,当我为实现类包含绑定时,我无法声明该类抽象,因为Object Factory需要创建实例。我不完全理解这一点。有人可以帮忙吗?谢谢!
<xs:complexType name="AbstractClass" abstract="true">
<xs:complexContent>
<xs:extension base="someModel:BaseClass">
<xs:sequence>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
答案 0 :(得分:1)
IIRC摘要只是说,通常你不会实例化这个类,它只能用于扩展。所以抽象检查取决于JAXB,与语言级抽象类无关
答案 1 :(得分:1)
您应该看到为抽象复杂类型创建的抽象类(请参阅下面的示例)。您能否提供有关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.xsd
<强>的ContactInfo 强>
生成的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 {
}