首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAXB生成的抽象类不是抽象类

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

Stack Overflow用户
提问于 2011-10-26 13:46:09
回答 2查看 2.3K关注 0票数 1

我使用这个模式通过JAXB生成一个java类。但是,生成的类不是抽象的。另外,当我包含实现类的绑定时,我无法声明该类是抽象的,因为对象工厂需要创建一个实例。我不完全理解这一点。有人能帮上忙吗?谢谢!

代码语言:javascript
复制
<xs:complexType name="AbstractClass" abstract="true">
    <xs:complexContent>
        <xs:extension base="someModel:BaseClass">
            <xs:sequence>

            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>
EN

回答 2

Stack Overflow用户

发布于 2011-10-26 14:31:25

IIRC抽象只是说,通常你不会实例化这个类,它应该只用于扩展。因此,抽象检查由JAXB决定,与语言级抽象类无关

票数 1
EN

Stack Overflow用户

发布于 2011-10-26 22:59:17

您应该会看到为抽象复杂类型创建的抽象类(参见下面的示例)。您能提供有关您的XML模式的更多细节吗?

inheritance.xsd

contactInfo是一个抽象的复杂类型。

代码语言:javascript
复制
<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调用

代码语言:javascript
复制
xjc -d out inheritance.xsd

ContactInfo

生成的ConactInfo类是抽象的:

代码语言:javascript
复制
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 {


}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7899084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档