【问题标题】:Need to add a method to JAXB class. How? Or should I?需要向 JAXB 类添加一个方法。如何?还是我应该?
【发布时间】:2018-03-07 17:49:34
【问题描述】:

我使用 JAXB 从 WADL xsd 生成 POJO。我直接从 W3C 下载了 xsd。但是,我希望我的一个 POJO 有一个辅助方法,允许我通过它进行递归,如下所示:

public Stream<WadlResource> flattenPath() {
    return Stream.concat(
        Stream.of(this), 
        this.methodOrResource.stream()
                .filter(WadlResource.class::isInstance)
                .map(WadlResource.class::cast)
                .flatMap(WadlResource::flattenPath) // recursion here
            );
}

注意this 的使用。这种方法是我见过的唯一一种使用流递归的方法。

所以我的问题是:如何添加此方法以便它与 xsd 一起生成?这是好习惯吗?或者我应该只生成一次代码,添加方法,然后将其签入我的存储库(这似乎不是好的做法)。蒂亚!

【问题讨论】:

    标签: java java-8 jaxb wadl


    【解决方案1】:

    这是好的做法吗?

    这是主观的。我通常不这样做。我更喜欢将架构派生类作为简单的 DTO,而无需任何业务逻辑。

    如何添加这个方法以便它与 xsd 一起生成?

    您可以使用代码注入器插件注入代码。请看以下问题:

    Inserting code with XJC+xsd+jxb using the options " -Xinject-code -extension "

    【讨论】:

    • 谢谢,但你知道我将如何在实用程序类中重写递归方法吗?
    • @user1660256 您递归地调用实用程序类的方法。这是一个不同的问题,请单独提问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 2016-07-03
    相关资源
    最近更新 更多