问题标签 [sun-codemodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
251 浏览

java - 使用代码模型扩展内部类

如何从内部静态类扩展生成的类?

例如,我有

我希望我生成的类从 Bar 扩展

我得到的是

但我想要的是

解决方案

你应该像这样传递类名:

CodeModel 会生成

0 投票
1 回答
152 浏览

java - 如何使用 codeModel 生成具有十六进制常量值的 int 字段

我正在尝试使用生成 java 枚举compile group: 'com.sun.codemodel', name: 'codemodel', version: '2.6'

每个枚举常量都有两个 int 参数,它们必须设置为 hex/unicode 值。

我希望生成的代码将类似于此

目前我能生成的就是这个

我用来生成每个常量的 codeModel 代码是这样的:-

我明白这是我使用的com.sun.codemodel.JExpr方法

这会导致问题,但是我看不到如何从十六进制值生成需要的整数常量。

是否有可能达到我想要的结果?

更新

我有以下驱动我的代码生成的输入数据

0 投票
1 回答
650 浏览

code-generation - 使用 com.sun.codemodel;如何将类写为字符串而不是文件

我正在调查com.sun.codemodel生成 Java 类。

JCodeModel 类有多种构建方法,支持将所需的 Java 类生成到文件中,但是我想将这些生成的类作为字符串获取。

查看 JCodeModel 的 Javadoc 和源代码,我无论如何都无法实现这一目标。

如何获取生成的类作为字符串而不是/以及将它们写入文件?

是否可以扩展com.sun.codemodel.CodeWriter以产生字符串?

0 投票
1 回答
388 浏览

java - JAXB、XJC:为类大纲生成字段

我的问题涉及编写 JAXB 插件,尤其是ClassOutline内部插件。

里面有com.sun.tools.xjc.outline.ClassOutline字段:

  • 目标
  • 参考
  • 实现类
  • implRef

代码:

据我所知(所以回答):

  • target- 在 中保存信息Model,表示已解析和分析的架构文件 (.xsd)
  • ref通常等于implClass并且两者都成立Code Model
  • implClass是放置新生成的字段、方法等的正确位置。
  • implRef- 它是什么?

我想将新字段添加到描述的类中ClassOutline,所以代码如下所示:

它工作得很好,直到在执行上述代码并使用com.sun.tools.xjc.outline.ClassOutline.getDeclaredFields()方法之后有另一个插件工作。

想象一下 -Plugin1创建新字段,然后执行CopyablePlugin并希望添加clone()复制每个字段的方法。但CopyablePlugin没有看到新生成的字段Plugin1- 因为要从使用方法中检索所有字段,如下所示ClassOutlineCopyablePlugincom.sun.tools.xjc.outline.ClassOutline.getDeclaredFields()

请注意,它getDeclaredFields()从字段中检索属性ClassOutline.target(这是Model已解析的 XSD 模式)并完全忽略生成到ClassOutline.implClass.

它是错误还是功能?

现在我找到了解决方法。相同的字段也作为属性添加到target


问题

  1. 能解释一下吗,是什么角色ref/implClass/implRef
  2. 我应该在哪里生成全新的字段/方法?进ref/implClass
  3. 是否有必要保持 和 之间的ref/implClass一致性target?添加到的新字段implClass也应该添加到target,对吗?
  4. 是否com.sun.tools.xjc.outline.ClassOutline.getDeclaredFields()正确?或者如何正确地从 ClassOutline 中检索所有字段?也许这应该是targetimplClass内容的结合?
0 投票
1 回答
191 浏览

java - 如何使用代码模型调用另一个类的方法

我有一个 java 类说 Class A 已经存在一些方法,我正在使用代码模型生成一个类classB,并且在使用代码模型生成时我试图调用一个方法classA

我在下面试过

但它不起作用,如果有人知道如何做同样的事情,我将不胜感激

我想生成一个方法,如:

我也对如何生成以下方法感兴趣:

0 投票
2 回答
132 浏览

java - 如何使用 codemodel 使用父类的任何字段

我有一堂课和Parent一堂课Derived

现在下面的类我想使用 CodeModel 生成

我在下面尝试但没有工作

如何调用 obj 而不是像在Parent课堂上那样创建新对象?

0 投票
1 回答
172 浏览

java - 如何在使用 CodeModel 的方法内“生成源代码”创建和初始化 hashMap

要生成的源代码

能够创建为全局变量,但我需要在方法中创建它

0 投票
1 回答
73 浏览

sun-codemodel - 如何使用 CodeModel 初始化二维数组

我需要初始化一个二维数组,如下所示

我试过了

但它初始化一维数组,

任何帮助表示赞赏

0 投票
0 回答
56 浏览

java - 在将 CodeModel 对象保存为磁盘上的实际类之前,使 CodeModel 对象实现/继承父对象

我需要将接口的实现添加到填充的JCodeModel对象,然后.java使用codeModel.build("FilePath");. 我正在使用jsonschema2pojo库来创建JCodeModel对象。

代码是这样的:

可以选择JCodeModel在类()中实现接口_implements(),但我无法在上面的代码中使用它(请参阅代码中的以下注释):

0 投票
1 回答
50 浏览

sun-codemodel - 如何在代码模型中创建一个简单的赋值语句?

我想使用代码模型创建一个简单的语句,例如:-

我现在不想将它分配给任何块,而只是返回它,因为我需要稍后引用变量的名称。如何创建这样的语句以及将其存储在哪种类型的变量中?它会是一个 JStatement 吗?如果是,那怎么办?