使用codemodel生成Java代码
2023-03-07 09:42:05 时间
例子
JCodeModel cm = new JCodeModel(); JDefinedClass dc = cm._class("foo.Bar"); dc.annotate(cm.ref("org.springframework.stereotype.Repository")).param("value", "apnService"); dc.field(JMod.PRIVATE + JMod.STATIC, cm.parseType("String"), "staticVar", JExpr.lit("abc")); dc.field(JMod.PUBLIC + JMod.STATIC + JMod.FINAL, cm.INT, "MAX_ARRAY_SIZE", JExpr.lit(25)); JArray array = JExpr.newArray(cm.parseType("String")); // 创建类型为数组 dc.field(JMod.PUBLIC + JMod.STATIC + JMod.FINAL, cm.parseType("String[]"), "SORTS", array); array.add(JExpr.lit("createdAt")); array.add(JExpr.lit("updatedAt")); JMethod m = dc.method(0, int.class, "foo"); m.body()._return(JExpr.lit(5)); JMethod m2 = dc.method(JMod.PUBLIC, cm.VOID, "bar"); m2.javadoc().add("This method will say Hello to the name."); m2.annotate(Override.class); m2.annotate(cm.ref("javax.ws.rs.GET")); m2.annotate(cm.ref("javax.ws.rs.Path")).param("value", "/getCustomerInfo").param("name", "appPushMessageMapper"); JBlock block = m2.body(); JType type = cm.parseType("String"); JVar var = block.decl(type, "fieldVar"); JVar var1 = block.decl(type, "fieldVar1", JExpr.lit("test")); JType typeMap2 = cm.ref("java.util.Map").narrow(cm.ref("String"), cm.ref("Object")); JType typeMap3 = cm.ref("java.util.HashMap").narrow(cm.ref("String"), cm.ref("Object")); block.decl(typeMap2, "map", JExpr._new(typeMap3)); JAnnotationUse ja; JMethod m3 = dc.method(JMod.PUBLIC, cm.parseType("String"), "get"); JVar jv = m3.param(cm.parseType("String"), "id"); ja = jv.annotate(cm.ref("Param")).param("value", "id"); jv = m3.param(cm.ref("java.lang.String"), "site"); ja = jv.annotate(cm.ref("javax.jws.WebParam")); // construct a Map<String, Integer> JType typeMap = cm.ref("java.util.Map").narrow(cm.ref("String"), cm.ref("Object")); jv = m3.param(typeMap, "args"); ja = jv.annotate(cm.ref("Param")).param("value", "params"); File file = new File("d:/home/tomcat/code/"); file.mkdirs(); cm.build(file);
相关文章
- 一次性聊透JVM架构设计,就算八股文也得会
- Java Record可以完全取代Lombok吗?
- Spring.Factories 要被弃用了,快来Get新写法
- JDK的一个Bug,监听文件变更要小心了
- 如何使用Lightrun在生产环境中调试jsoup Java代码
- 如何加快Java中大型集合的处理
- JVM系列之沙箱安全机制笔记
- 提升Java字符串编码解码性能的技巧
- Java 原子变量中set()和lazySet()的区别,你会了吗?
- 15 行 Java 代码实现一个标准输出的进度条,其中的知识点你知道但并不一定会用
- Java可能是迄今为止最好的编程语言,为什么这么说?
- 一篇文章带你了解SVG JavaScript脚本
- TIOBE5月编程语言排行出炉!有哪些新看点?
- 太极限了,JDK的这个Bug都能被我踩到
- JVM 八股之首:三大垃圾收集算法
- Java利用技巧—通过jsp加载Shellcode
- 聊聊 Java SPI 机制,你会了吗?
- Spring Security 中的权限注解很神奇吗?
- 一文分清Java开发中容易混淆的四大设计模式
- 聊聊并发编程的12种业务场景