使用codemodel生成Java代码

例子

复制代码
        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);
复制代码

 

posted on   Milton  阅读(612)  评论(0编辑  收藏  举报

编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示