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

时间:2013-06-04 20:33:10

标签: java jibx

我有一个名为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生成的类生成适配器模式?

1 个答案:

答案 0 :(得分:0)

你的问题的答案是肯定的,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>

生成的类将是:

package org.jibx.sampleschema.person;
public class Person
{
    private String firstName;
    private String lastName;
    ...

您的代码会显示为:

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

这非常合乎逻辑且很干净。拥有全局唯一的类名非常有用,尤其是在使用公共模式定义时。将绑定作为开源发布将为使用相同模式的其他人节省一些时间。

如果默认值不可接受,通过设置JiBX配置,可以非常轻松地更改包和/或类名。

我希望这有帮助!

唐科利郎 JiBX贡献者