问题标签 [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.
java - Codemodel:在循环中生成泛型类型 .narrow()?
我正在使用 sun-codemodel 生成代码。我对泛型有疑问。我知道要生成类似的东西
我需要使用
但是,如何为不止一种泛型类型创建更通用的东西?
我想在循环中执行它,以便它支持自定义类中的任意数量的参数,但对于如下代码:
输出是这样的:
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”
java - Sun CodeModel - 如何创建具有多个参数的枚举
我想使用 Sun 的代码模型创建一个类似于以下代码片段的枚举类
我能够为枚举的构造函数、字段和 getter 方法生成代码。但是,我无法用三个值初始化枚举常量。JDefinedClass 有一个方法 enumConstant,它只接受枚举常量的名称作为参数。我也通读了 JEnumConstant 类的文档,但找不到任何可以向枚举常量添加三个值的内容。
java - 使用 CodeModel Java API 覆盖注释
如何@Override
使用 codeModel 向我的方法添加注释?
我没有找到@Override
课程。
java - 如何使用 CodeModel 从 2 级抽象超类调用方法?
我正在使用 CodeModel 2.6。
当 getType() 方法继承自抽象超类时,我将如何生成这条指令,比 JDefinedClass 高两层?
背景:
- assertEquals(...) 方法来自“import static org.junit.Assert.assertEquals;”
- 类层次结构是
- GeneraldocumenMetadata 扩展了 ItemMetadata
- ItemMetadata 扩展 AbstractItemMetadata
- AbstractItemMetadata 拥有 getType() 方法和私有类型字段
最终结果/所需方法如下:
CodeModel 方法目前看起来像这样,但是 "definedClass.getMethod("getType", new JType[] {}); "返回 null
java - Java Codemodel - 注释方法或类
我正在使用 CodeModel 以编程方式生成 .java 文件。这是创建方法的代码片段:
当我运行时(假设所有其他必要的代码都在那里);
但我想像这样注释上面的方法:
为此我尝试了以下方法:
method.annotate(...) and method.annotate2(...)
但是这些方法只接受类文件作为参数(即像 SomeClass.class 形式),但我希望能够将字符串作为参数,并且该类将在运行时动态可用。
说我应该能够这样做:method.annotate("Path")
.
谁能帮我?
java - 代码模型 / arg 参数中的引号 (")
我尝试在 codemodel(Sun) 中创建下一个表达式:
所以 whatToclick 将是我函数中的一个参数。
所以我写了下一个:
我有两个问题:
我没有成功将 whatToClick 作为参数。它总是在引号中(因为我的表达式是一个字符串,我必须放
/"
,否则它会关闭字符串。)表达式是在没有
click()
零件的情况下创建的。
有什么帮助吗?
java - 如何使用 codemodel 库生成循环和条件
我一直在尝试学习如何使用 Suns代码模型库,但我对生成for 循环和 if-else 块感到非常困惑。我正在为如何为 if-else 块和 for 循环生成条件而苦苦挣扎,同时也在为如何生成它们的主体而苦苦挣扎。
例如:
对于循环:
java - Codemodel Java 库 - 初始化二维数组
只是尝试使用 Sun 的 codemodel 库声明和初始化一个二维数组,但我遇到了一些问题。我试过了:
输出:
但我似乎无法找到填写最后一个 [ ] 的方法。我尝试了几种变体。
更具体地说,我需要能够使用以下内容进行初始化:
JExpr.ref() 似乎不适用于此。
任何帮助,将不胜感激。谢谢
code-generation - CodeModel / Jinvocation 与 JMethod.body()
我有下一个 JInvocation:
哪里anotherPageInstance
是JVar
和方法是JMethod
。
我对此做了一些操作JInvocation
,然后我想将它添加到test.body().invoke
test 所在的位置JMethod
。
主要问题是我不能,因为test.body().invoke
没有选择JInvocation
作为参数。
我可以做下一个: test.body().invoke(anotherPageInstance, method)
,但这对我没有帮助,因为我想保存JInvocation
,并且当某些情况发生时,将其添加Jinvocation
到正文中(正如我之前提到的,同时我对此做了一些操作JInvocation
)。
有什么帮助吗?