簡體   English   中英

如何為JAXB未編組對象添加功能?

[英]How to add functionality to JAXB unmarshalled objects?

我有一個XML模式(.xsd文件),可以使用JAXB從中生成Java類。 對於許多生成的類,都有相關的功能。 例如,對於生成的類Dog ,將有一個函數public static void bark(Dog) ;對於生成的類Cat ,將有一個函數public static void meow(Cat)

對於像Java這樣的面向對象的語言,這感覺很奇怪。 我想要的是將XML編組為包含有用和相關功能的對象,而不僅僅是結構。

因此,如果生成的類在gen包中,則這些類將具有不同的包:

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

有什么方法可以解組到這些功能更強大的子類中,而不是分解到gen.*類中?

這類問題的答案通常是“使用或編寫XJC插件”。

您可以使用代碼注入器插件將代碼添加到生成的類中,請參見以下答案:

您可以使用JAXB2-Basics的繼承插件來擴展類或實現接口:

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

從設計的角度來看,可以將模式派生的類視為DTO,在這種情況下,不應包含功能。 然后,您將需要一個業務模型,並使用Dozer之類的東西在DTO和您的業務模型類之間進行映射。

暫無
暫無

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

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