2015-10-15 40 views
0

我有一個XML架構(.xsd文件),我從中使用JAXB生成Java類。對於許多生成的類,都有相關的功能。例如,對於生成的類Dog,將會有一個函數public static void bark(Dog),對於生成的類Cat,將會有一個函數public static void meow(Cat)如何向JAXB解組對象添加功能?

這在像Java這樣的面嚮對象語言中感覺很奇怪。我希望將XML解組爲包含有用和相關功能的對象,而不僅僅是結構。

因此,如果生成的類都在包gen那麼我將有一個不同的封裝,這些類:

public class Cat extends gen.Cat { 
    public void meow() { ... } 
} 
public class Dog extends gen.Dog { 
    public void bark() { ... } 
} 

是否有某種方式來解讀到這些功能的多個子類,而不是到gen.*類?

回答

0

這類問題的答案通常是「使用或編寫一個XJC插件」。

您可以使用代碼注入插件代碼添加到生成的類,看到這樣的回答:

你可以擴展一個類或利用繼承的插件實現接口JAXB2-基礎:

聲明:我是JAXB2-Basics的作者。

從設計角度來看,架構派生類可能被認爲是DTO,在這種情況下不應該包含功能。您需要一個商業模型,然後使用Dozer之類的東西來映射DTO和您的業務模型類。