我需要使用“factoryMethod”来解决“两个声明导致ObjectFactory类中的冲突。”。但是,我收到“编译器无法兑现此工厂方法定制”。我找不到关于“factoryMethod”的信息。好像我没有正确使用它。请看我的简化架构:
<?xml version='1.0' encoding='UTF-8' ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.1">
<xs:element name="UseCase">
<xs:complexType>
<xs:sequence>
<xs:element name="StepAction" >
<xs:annotation>
<xs:appinfo>
<jxb:factoryMethod name="createStepAction" />
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我使用“xjc%schemaname%”来生成类。
答案 0 :(得分:0)
似乎jxb:factoryMethod只能用于xjc抱怨的元素。在我的例子中,我不得不通过在与StepAction相同的级别添加其他元素来导致“编译器无法遵守此工厂方法定制”:
<?xml version='1.0' encoding='UTF-8' ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.1">
<xs:element name="UseCase">
<xs:complexType>
<xs:sequence>
<xs:element name="StepAction" >
<xs:annotation>
<xs:appinfo>
<jxb:factoryMethod name="createStepAction" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element name="Step-Action"/> <!-- causes Compiler was unable to honor this factoryMethod customization -->
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
在这种情况下,XJC不会抛出“编译器无法遵守此工厂方法定制”。
我的结论: