gpt4 book ai didi

JAXB 如何从 JDefinedClass 中删除任何内容

转载 作者:行者123 更新时间:2023-12-05 00:44:52 25 4
gpt4 key购买 nike

我正在使用 jaxb 从 xsd 生成代码。

生成的代码包含大量注解;用于类和字段。

我正在尝试使用 com.sun.tools.internal.xjc.Plugin 修改生成的代码。

在插件run() 方法中,我们得到了一个Outline 类,我们可以从中获取ClassOutlineClassOutline 有一个 JDefinedClass final 成员,它包含有关将生成的实际类的信息。

如果我想添加任何东西,可以使用JDefinedClass 中的api。但是如果我想删除一些东西,就没有办法了。

例如我无法清除注释,因为 JDefinedClass.annotations() 方法返回一个 UnmodifiableCollection。所以我无法清除它或从中删除任何内容。

我试图通过调用 _class 方法创建另一个 JDefinedClass,但是 ClassOutline.implClass 变量是最终变量,所以我无法设置它。

如何得到一个没有任何注解的JDefinedClass

是否有代码生成的另一个阶段,我可以陷入其中以真正控制 JDefinedClass 的生成?

最佳答案

代码模型实际上大部分是“只写”的。但是,说到注释,您可能错过了像 com.sun.codemodel.JDefinedClass.removeAnnotation(JAnnotationUse) 这样的方法。和 com.sun.codemodel.JMethod.removeAnnotation(JAnnotationUse) (从 com.sun.codemodel.JAnnotatable.removeAnnotation(JAnnotationUse) 实现)。

所以他们在那里。您可以使用普通的 CodeModel API 删除注释。

如我所见,您还可以从类中删除字段和方法。那么您到底缺少什么?

关于JAXB 如何从 JDefinedClass 中删除任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32677605/

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