gpt4 book ai didi

java - 如何向 JAXB 生成的类添加自定义行为。自定义不覆盖现有方法

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:16 24 4
gpt4 key购买 nike

我从我无法控制的外部来源获得了一个 xsd。现在我们想要向 JAXB 生成的类添加自定义方法,以便对象能够更多地了解其自身,而不是成为具有 getter 和 setter 的简单 POJO。

这个想法就像,一旦我们实现了这种类型的方法,我们就不需要深入研究水合对象,而是通过调用自定义方法向对象询问我们需要的特定信息,并且可以获得我们想要的东西?

当然,有一种传统的编程方法,我不断深入根对象的子对象的子对象,在每个子对象上调用 getter 方法并实现业务逻辑。但不知怎的,这里的团队并不希望这样。

我到目前为止所做的一种方法是暴力方法。就像我使用 JAXB 从 XSD 生成类一样。然后我有一个外部实用程序(现在这是一个独立的java程序),在运行时,它将读取保存自定义方法的特定目录中的一些文本文件(以我们自己的方式构建,以找出应该进入哪个方法并进入哪个.java文件),并将这些方法移动到适当的JAXB生成的类。每次我获得新版本的 XSD 时,我都需要生成类、调用此实用程序,并可能解决一些编译问题等,以防 JAXB 生成的类中存在一些变量更改。该实用程序运行良好。但我想知道这个。

有没有更好的方法来做到这一点?我查了一下互联网。给出了一些解决方案,但这些只是覆盖 JAXB 生成的对象中现有的 get 方法,而不是添加全新的方法。

请提出建议。

最佳答案

嗯,“最干净的方法”是使用面向方面的编程(AOP),它不是在源代码级别而是在运行时执行您所描述的操作。它将方法注入(inject)到类中。 AOP 的一种可能实现是 AspectJ

如果 XML 模式不太复杂,第二种可能的选择是围绕它创建一个包装器。

您已经描述过第三种选择。但我认为你可以依靠标准工具而不是自己编码 - 我建议为此使用标准差异/补丁工具。只要您的代码风格是固定的,从现有的修改后的 java 文件创建差异并将其应用到新生成的 JAXB 代码上就不会太复杂。

关于java - 如何向 JAXB 生成的类添加自定义行为。自定义不覆盖现有方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4476481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com