Java JAXB:如何判断一个类是否在没有注释的情况下是可封送的

Java JAXB:如何判断一个类是否在没有注释的情况下是可封送的,java,annotations,jaxb,marshalling,Java,Annotations,Jaxb,Marshalling,我们有一个类,无法控制源代码,因此无法为JAXB注释它。我们还有一个处理编组的框架。这个框架有没有办法在不存在注释的情况下询问该类是否可封送?没有标准机制,但我似乎有人通过尝试在该类上创建JAXBContext来实现这一点: public boolean isValidJAXBClass(Class aClass) { try { JAXBContext.newInstance(aClass); } catch(JAXBException e) {

我们有一个类,无法控制源代码,因此无法为JAXB注释它。我们还有一个处理编组的框架。这个框架有没有办法在不存在注释的情况下询问该类是否可封送?

没有标准机制,但我似乎有人通过尝试在该类上创建JAXBContext来实现这一点:

public boolean isValidJAXBClass(Class aClass) {
    try {
        JAXBContext.newInstance(aClass);
    } catch(JAXBException e) {
        return false;
    }
    return true;
}
封送JAXB对象不需要任何注释。你可以不必担心 通过将@XmlRootElement包装在JAXBElement中来获得它

如果您想要一种表示元数据的替代方法,可以使用一个基于JAXB元数据的外部化绑定文件

示例文件如下所示:

<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm">
    <java-types>
        <java-type name="org.example.order.PurchaseOrder">
            <java-attributes>
                <xml-attribute java-attribute="id"/>
                <xml-element java-attribute="customer">
                    <xml-java-type-adapter value="org.example.order.CustomerAdapter"/>
                </xml-element>
                <xml-element java-attribute="lineItems" name="line-item"/>
            </java-attributes>
        </java-type>
    </java-types>
</xml-bindings>

有关更多信息,请参阅: