JAXB生成的抽象类不是抽象的

时间:2011-10-26 05:46:09

标签: java jaxb xsd

我使用此模式通过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>

2 个答案:

答案 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 {


}