同一个类不同的包和JAXB

时间:2016-07-18 16:21:45

标签: java xml xsd jaxb

我有几个.xsd,我想用JAXB生成类。

Package: v1
Class: JBObject
Class: ...

Package: v2
Class JBObject
Class: ...

我使用工厂模式,如果它是v1我使用v1的类,如果它是v2我使用v2的类。 在一个版本中我必须使用包1的类,而在其他版本中我必须使用包2的类。 生成的类是相同或几乎相同。

我还有其他一个名为Translation的方法:

import XX.JBObject;
public void translate(JBObject object)
{
    ...
    String name = object.getName();
    JBRelationObject relationObject = object.getRelationObject();
    int id = relationObject.getId();
    ...
}

JBObject是v1和v2中的同一个类,但我必须在类中导入,我不想复制和粘贴两次(每个导入一个) 我该如何解决?

使用import我的意思是:import v1.JBObject;或导入v2.JBObject;

1 个答案:

答案 0 :(得分:0)

您有几个选择。

选项1:使两个JBObject类实现相同的接口 因为它们是生成的,所以你可能不会这样做。

选项2:使用实现通用接口的适配器类包装它们 如果您需要在多个位置使用共享逻辑,这非常有用。

选项3:如果您的所有translate()方法需求都是JBObject.getName(),请获取名称并委托公共代码,例如

public void translate(v1.JBObject jb1obj) {
    translate(jb1obj.getName());
}
public void translate(v2.JBObject jb2obj) {
    translate(jb2obj.getName());
}
private void translate(String name) {
    // common logic here
}

没有import声明。您的代码在单个类中处理两个版本。