Java 扩展JibX自动生成类的类的绑定和解除绑定

Java 扩展JibX自动生成类的类的绑定和解除绑定,java,jibx,Java,Jibx,我有一个名为ObjectClass的类,它是由JibX从.xsd文件自动生成的。为了防止类名问题,该类已降级到其自己的包中,例如 com.CompanyName.ProductName.SDK.Device.GetCommandsResponse.ObjectClass 此类按预期绑定和解除绑定 我想创建一个扩展上述类的空类,我想知道新类是否会使用原始ObjectClass绑定正确绑定和解除绑定?或者我必须尝试为这个新扩展创建一个唯一的绑定吗 新类与此类似 public class device

我有一个名为ObjectClass的类,它是由JibX从.xsd文件自动生成的。为了防止类名问题,该类已降级到其自己的包中,例如

com.CompanyName.ProductName.SDK.Device.GetCommandsResponse.ObjectClass

此类按预期绑定和解除绑定

我想创建一个扩展上述类的空类,我想知道新类是否会使用原始ObjectClass绑定正确绑定和解除绑定?或者我必须尝试为这个新扩展创建一个唯一的绑定吗

新类与此类似

public class deviceGetCommandsResponse extends 
com.CompanyName.ProductName.SDK.Device.GetCommandsResponse.ObjectClass
{
   /// This is empty
}
这样做的目的是通过提供唯一的名称,使第三方开发人员更容易/更少地转换这些对象

所以不是

(com.CompanyName.ProductName.SDK.Device.GetCommandsResponse.ObjectClass) SomeReturnFromAMethod
他们可以使用

(deviceGetCommandsResponse) SomeReturnFromAMethod;
并且具有所有相同的功能


更广泛地说,我将如何为JibX生成的类创建适配器模式

您的问题的答案是肯定的,JiBX在扩展类中可以很好地工作

在你这样做之前,我会考虑这些选项:

首先,默认包名是名称空间URL位置,默认类名是顶级元素,这对于大多数绑定来说是一个很好的选择

例如,如果我的架构定义是:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.jibx.org/sampleschema/person" elementFormDefault="qualified" targetNamespace="http://www.jibx.org/sampleschema/person">
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstName" type="xs:string"/>
<xs:element name="lastName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
您的代码如下:

Person person = new Person();
person.setFirstName("Don");
这很符合逻辑,也很干净。具有全局唯一的类名非常有用,尤其是在使用公共模式定义时。将绑定作为开放源代码发布将为使用相同模式的其他人节省一些时间

如果默认设置不可接受,那么通过设置JiBX配置来更改包和/或类名非常容易

我希望这有帮助

唐·科利
JiBX贡献者

Person person = new Person();
person.setFirstName("Don");