问题标签 [jcodemodel]

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 回答
1678 浏览

jaxb - CodeModel中ClassOutline/JClass/CClass的作用是什么?

我的问题涉及编写 JAXB 插件,特别是 JAXB 代码模型。

ClassOutline(和它的同伴)和JClass(和同伴)和CClass(和同伴)的作用是什么?查看相应包中的类列表时,不清楚什么是鸡什么是鸡蛋。

我的解释是CClass( CPropertyInfo, CEnumConstant, ...) 是 XJC 在 XSD 的初稿解析时创建的。然后发生了一些神奇的事情,这个模型被转换为JClass( JFieldVar, JEnumConstant, ...) 并且在这个转换过程中应用了自定义。之后调用插件。ClassOutline被用作这两个模型之间的桥梁。整体看起来非常复杂。

通过这些并行模型,我相信可以通过多种方式得出相同的信息。例如类字段类型:

  • JClass#fields()JFieldVar#typeJType
  • CClassInfo#getProperties()CPropertyInfo#baseTypeJType

我正在寻找上述模型生命周期的详细解释。谢谢。

0 投票
2 回答
866 浏览

java - 在方法中重用时如何获取类的泛型“T”

我正在为 Fluent API 构建代码生成器。我想为每个现有的(POJO)类创建一个新类。我没有控制现有的课程。我通过反射解析现有方法,如果遇到 setter 或“add”方法,我会在我的 Fluent-Wrapper 类中为此创建一个方法,所以我可以说 child().values(....).get ()。

这适用于简单的参数。我花了一段时间才弄清楚如何处理 ParameterizedTypes,但我现在可以处理它了。我没有得到的是如何为泛型参数创建一个具体方法,该方法的类型不是在方法本身上定义,而是在包含类上。

我有这样的事情:

现在我尝试通过 JCodeModel 生成代码,需要解析参数“values”的类型。问题:我得到一个包含 List 和 TypeVariable "T" 的 ParameterizedType。但我无法将“T”映射回字符串。但我无法弄清楚如何通过实现“Child”来获得具体的“T”类型。任何人?

澄清:我这样做,当涉及到“TypeVariable”的情况时,不需要“T”而是“String”

0 投票
1 回答
278 浏览

java - JCodeModel 将带有点分类的字段声明为类型

我正在使用 JCodeModel 自动生成一些代码。

在某些时候,代码模型似乎将我的所有 String 类型声明为:

我遇到过几次这个问题并自己解决了(一个可能的原因是声明一个字段或方法参数的名称以大写字母开头)。

这次我不明白原因。

任何人都知道什么可能导致代码模型以这种方式声明它?

谢谢

0 投票
1 回答
151 浏览

java - 退出后保存 Jcodemodel 对象

我对 JCodeModel (SUN) 有疑问。我的程序每天都在运行,我想在当前运行之前创建的类中添加一些功能。

JcodeModel 支持这个吗?如果没有,有什么选项可以将 JCodemodel 对象保存在外部文件中,加载以前的 JcodeModel,然后添加新功能?

谢谢。

0 投票
2 回答
1853 浏览

java - JCodeModel - How to chain invoke methods

I am trying to figure out how to use a loop to build a JExpression that I can use in an .assign() call. I know that you can do something like JExpr.invoke("methodA").invoke("methodB") with JCodeModel, but I want to be able to add each .invoke() method based on a list of method names. Does anyone know how to do this?

Example of my Generator code [this is assuming that I have modified the ArrayList.add() method to return the ArrayList]:

Example of what I am trying to generate:

My problem is that this method doesn't chain the invoke methods, but replaces them so the generated code looks like this:

0 投票
1 回答
606 浏览

java - 有没有办法将 java arraylist 对象复制到 codemodel 生成的源中?

我在使用codemodel的代码生成类中有一个填充的arraylist(非codemodel),我想在生成的代码中使用它。有什么办法吗?它有点“穿越世界”,因为生成的代码不引用或不依赖于生成它的代码,但是我仍然想使用 arraylist 的值,而不必在遍历值时手动复制它价值......必须有一种方法来做到这一点,因为有字符串,数字等......?

我的示例代码如下:

正如您在我的作业声明中看到的那样,有一个 {X} 空白字段,这是我试图弄清楚如何编写的。话虽如此,{X} 应该引用 makeHeadersWrapper 签名中的“headersList”参数。有什么方法可以将变量的值引用为 {X} 并使其成为代码模型 JExpr(ession)?请帮我解决{X}!:P

真诚地感谢, 皮奥特

0 投票
1 回答
262 浏览

java - 如何将 CodeModel 表达式强制括在括号中?

我想使用 Sun 的 CodeModel 生成一些非常常见的代码

但是,当我写:

我明白了

注意括号不见了。如何强制括号出现在代码中?

0 投票
1 回答
433 浏览

sun-codemodel - 如何缩小匿名类?

我想生成一些如下代码:

我尝试了以下方法:

下面出现异常,由“anonymousSomeClass.narrow(jClass)”引起。如果我删除'.narrow(jClass)',一切都会好起来的。

谢谢。

0 投票
1 回答
187 浏览

jcodemodel - 如何使用 jcodeModel 生成静态初始化块

我需要用 jcodemodel 生成这样的东西

谷歌没有帮助。有一个类JBlock,但没有关于初始化块的内容。

0 投票
1 回答
522 浏览

jcodemodel - 如何使用 JCodeModel 在方法内生成注释

我需要这样的东西

这是我如何生成一个类和一个方法