问题标签 [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 - 在 com.sun.codemodel 中使用泛型
使用com.sun.codemodel,我想生成一个通用的 LinkedList 字段。我可以使用以下代码创建一个原始字段:
但我找不到一种方法来创建一个通用类型为detailClass
.
java - 右手 singleton.getinstance() 分配需要 CodeModel 帮助
我已经能够使用 CodeModel API 生成我需要的 99% 的东西,但我在这里被难住了......
使用各种“directXX”方法不会将导入语句添加到生成的代码中,并且我可以在没有“directXXX”类型的方法的情况下工作,除了生成类中的一个位置。
假设我想要一个生成的方法,例如:
您可以在括号中看到 Mapper 分配的右手。发出整个包+类是我能找到的在右侧声明“SomeSingleton.someMethod()”并编译生成的代码的唯一方法。如果没有将 MapperSingleton 添加到对象模型中,则不会生成导入...
问题:
1)有没有办法强制生成导入?
2)如何声明一个表达式,让我在对象模型中给出 Mapper 赋值的右侧(以便生成 MapperSingleton 的导入。
任何帮助表示赞赏...
java - CodeModel 是否支持从未指定的包中导入类?
我想生成一个包含对类的引用的文件,而不知道它实际来自哪个包。
例如用户提供
我需要生成
该类Button
可以在任一包中。CodeModel 支持这种场景吗?CodeModel中的示例需要右手 singleton.getinstance() 分配和生成 Java 源文件的 Java API指定类的完整包名称,查看JavaDoc没有帮助。
java - 在带有 CodeModel 的 switch 中使用枚举常量
我正在使用代码模型 API来生成 java 源文件。我有一个通过 codemodel API 定义的枚举,我想在 switch 块中使用它。在 switch 语句中,枚举常量应该被用作不合格的。我无法访问枚举常量的非限定名称,因为代码模型 API 使用枚举类名称来限定常量。
简而言之,我想使用 codemodel API 生成以下代码片段。
但是 codemodel 像这样生成
感谢你的帮助。
java - 代码模型的三元运算符支持?
是否可以在生成的代码中使用三元运算符com.sun.codemodel
?
我希望生成以下语句:
java - CodeModel中如何获取Assert JClass?
该org.junit
包定义了Assert
用于 JUnit 测试的类。如何JClass
在CodeModel
框架中检索这个静态类?
java - NoClassDefFoundError:注解处理期间的org/junit/AfterClass
我在使用 Maven 进行注释处理期间使用 CodeModel 生成代码。该代码用于 JUnit 测试:
然而,编译过程java.lang.NoClassDefFoundError : org/junit/AfterClass
在尝试检索 时会抛出 a ,它AfterClass.class
本身就是一个注解。
对 JUnit 的依赖定义如下:
所以AfterClass.class
应该在我的代码中可用。
我该如何解决这个问题?
不清楚
调用 codemodel 的代码位于 junit 不是“测试”依赖项的编译库中。但是,调用生成代码的代码具有相同的 junit 依赖,但作为测试依赖。
如果我将后一种依赖项更改为“非测试”依赖项,问题就会消失。为什么我必须将此依赖项定义为“not-a-test”,尽管只有调用 codemodel 的库明确使用它?
编辑
这是依赖树:
很奇怪:
不包含org.junit
,是的,这个库的 pom.xml 有:
java - CodeModel - 如何使用枚举值定义注释?
似乎 java 代码生成器框架CodeModel无法创建仅包含没有名称的枚举值的注释- 不幸的是,这是一种非常常见的模式(例如,JPA 使用的模式):
API 文档仅说明 “ TODO How to add enums to the annotations”
问题:
有没有办法解决这个限制?
jaxb - CodeModel中ClassOutline/JClass/CClass的作用是什么?
我的问题涉及编写 JAXB 插件,特别是 JAXB 代码模型。
ClassOutline
(和它的同伴)和JClass
(和同伴)和CClass
(和同伴)的作用是什么?查看相应包中的类列表时,不清楚什么是鸡什么是鸡蛋。
我的解释是CClass
( CPropertyInfo
, CEnumConstant
, ...) 是 XJC 在 XSD 的初稿解析时创建的。然后发生了一些神奇的事情,这个模型被转换为JClass
( JFieldVar
, JEnumConstant
, ...) 并且在这个转换过程中应用了自定义。之后调用插件。ClassOutline
被用作这两个模型之间的桥梁。整体看起来非常复杂。
通过这些并行模型,我相信可以通过多种方式得出相同的信息。例如类字段类型:
JClass#fields()
→JFieldVar#type
→JType
CClassInfo#getProperties()
→CPropertyInfo#baseType
→JType
我正在寻找上述模型生命周期的详细解释。谢谢。
java - Sun CodeModel 泛型方法
有谁知道如何使用 CodeModel 生成以下通用方法声明?
用法:
似乎没有被现有的实现处理。
我知道我可以按如下方式处理代码,但它需要强制转换:
用法:
显然,由于演员阵容,这有点混乱。