簡體   English   中英

同一個類不同的包和JAXB

[英]Same class different package and JAXB

我有幾個.xsd,我想用JAXB生成類。

Package: v1
Class: JBObject
Class: ...

Package: v2
Class JBObject
Class: ...

我使用工廠模式,如果它是v1我使用v1的類,如果它是v2我使用v2的類。 在一個版本中我必須使用包1的類,而在其他版本中我必須使用包2的類。生成的類是相同或幾乎相同的。

我有其他類稱為翻譯方法:

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:使兩個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聲明。 您的代碼處理單個類中的兩個版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM