在本文中,我将向您展示如何使用...生成Java代码JavaParser。我在javaparser.org或手册中找不到关于代码生成的大量文档。因此,我认为将其解决将有助于想要尝试使用Java解析器的人。

在最简单的形式中,  JavaParser 库允许您与Java源代码交互,作为Java环境中的Java对象表示。更正式地说,我们将此对象表示称为抽象语法树(AST)。此外,它还能够操纵源代码的底层结构。然后可以将其写入文件,为开发人员提供构建自己的代码生成软件的工具。

首先,您必须实例化编译单元,然后在其上添加剩余的代码片段。

CompilationUnit compilationUnit = new CompilationUnit();

然后,您可以将import语句添加到编译单元,此处:

compilationUnit.addImport("org.springframework.boot.SpringApplication");

您可以将package语句添加到编译单元,如下所示:

compilationUnit.setPackageDeclaration("com.abc.def");

您可以将类声明添加到Java文件中:

ClassOrInterfaceDeclaration classDeclaration = compilationUnit.addClass("AnyClassName").setPublic(true);

如果要在类级别添加注释,可以使用以下代码:

classDeclaration.addAnnotation("AnyAnnotation");

您可以在新声明的类中添加方法声明,如下所示:

MethodDeclaration methodDeclaration = classDeclaration.addMethod("anyMethodName", PUBLIC);

methodDeclaration.setType("AnyReturnType");

您可以为新创建的方法声明添加参数:

methodDeclaration.addAndGetAnnotation("AnyAnnotation");

在新声明的方法之上添加注释:

BlockStmt blockStmt = new BlockStmt();

methodDeclaration.setBody(blockStmt);

要在新声明的方法中添加方法logic / block语句,请使用以下代码:

BlockStmt  blockStmt  =  new  BlockStmt();

methodDeclaration。setBody(blockStmt);

要在方法/块语句中声明和实例化变量,请使用以下代码:

ExpressionStmt expressionStmt = new ExpressionStmt();

VariableDeclarationExpr variableDeclarationExpr = new VariableDeclarationExpr();

VariableDeclarator variableDeclarator = new VariableDeclarator();

variableDeclarator.setName("anyVariableName");

variableDeclarator.setType(new ClassOrInterfaceType("AnyVariableType"));

variableDeclarator.setInitializer("new AnyVariableType()");

NodeList variableDeclarators = new NodeList<>();

variableDeclarators.add(variableDeclarator);

variableDeclarationExpr.setVariables(variableDeclarators);

expressionStmt.setExpression(variableDeclarationExpr);

blockStmt.addStatement(expressionStmt);

要调用方法/块语句中创建的新变量的方法,请使用以下代码:

NameExpr nameExpr = new NameExpr("anyVariableName");

MethodCallExpr methodCallExpr = new MethodCallExpr(nameExpr, "anyMethodName");

methodCallExpr.addArgument("anyArgument");

blockStmt.addStatement(methodCallExpr);

要返回在方法中创建的变量,请使用以下代码:

ReturnStmt returnStmt = new ReturnStmt();

NameExpr returnNameExpr = new NameExpr();

returnNameExpr.setName("anyVariableName");

returnStmt.setExpression(returnNameExpr);

blockStmt.addStatement(returnStmt);

要打印上面生成的代码,只需调用toString 编译单元的  方法:

String code = compilationUnit.toString();

要使用多值键值对添加注释,请使用以下代码。

NodeList annotationParamValueList = new NodeList<>();

annotationParamValueList.add(new StringLiteralExpr("Value1");

annotationParamValueList.add(new StringLiteralExpr("Value2");

ArrayInitializerExpr annotationParamValueArrayInitializerExpr = new ArrayInitializerExpr(annotationParamValueList);

Name annotationName = new Name("AnyAnnotationName");

NodeList annotationParamList = new NodeList<>();

MemberValuePair memberValuePair = new MemberValuePair();

memberValuePair.setName(new SimpleName("AnyValue"));

memberValuePair.setValue(annotationParamValueArrayInitializerExpr);

annotationParamList.add(memberValuePair);

AnnotationExpr annotationExpr = new NormalAnnotationExpr(annotationName, annotationParamList);

另外本人从事在线教育多年,将自己的资料整合建了一个公众号,对于有兴趣一起交流学习java可以微信搜索:“程序员文明”,里面有大神会给予解答,也会有许多的资源可以供大家学习分享,欢迎大家前来一起学习进步!

java中parser_JavaParser:Java代码生成相关推荐

  1. java编译程序的基本命令是什么,【填空题】Java中编译java 程序的命令是 1 ,执行java程序的命令是 java 。...

    [填空题]Java中编译java 程序的命令是 1 ,执行java程序的命令是 java . 更多相关问题 [多选] 下列骨折中属于关节外骨折的是(). [多选] 骨折早期局部的并发症包括(). [多 ...

  2. java 中lock,java中lock获取锁的四种方法

    在java接口中会存放着许多方法,方便线程使用时的直接调用.对于lock接口大家都不陌生,我们已经初步对概念进行了理解.那么在获取锁的方法上想必还不是很清楚.下面我们就lock获取锁的四种方法分别进行 ...

  3. java中setid(),Java Process.setId方法代碼示例

    本文整理匯總了Java中org.activiti.bpmn.model.Process.setId方法的典型用法代碼示例.如果您正苦於以下問題:Java Process.setId方法的具體用法?Ja ...

  4. java中.of,java中的sizeof

    关键字: java sizeof 在C/C++中,当我们想知道一个对象或者一个原始数据类型所占用的内存大小时,只需简单调用sizeof操作符即可,但是,在java中是没有相应的操作符或者方法来直接完成 ...

  5. java获取vm运行参数_如何获取在Java中运行Java VM的版本?

    java获取vm运行参数 To get the version of running VM (Virtual Machine) in Java, we use the getProperties() ...

  6. java中.of,java中instanceof的用法

    java 中的instanceof 是一个二元操作符(运算符)运算符,由于是字母组成,所以是Java的保留关键字,它的作用是用来判断,instanceof 左边对象是否为instanceof 右边类的 ...

  7. java中decrement,Java Math decrementExact()用法及代码示例

    java.strictmath.lang.decrementExact()是java中的内置函数,该函数返回减1的参数,如果结果溢出指定的数据类型long或int,则抛出异常,具体取决于在方法参数上使 ...

  8. java中文件,java中文件操作大全

    java中文件操作大全 一.获得控制台用户输入的信息 view plaincopy to clipboardprint? / //获得控制台用户输入的信息 return throws ioexcept ...

  9. Java中的java.util包

    The java.util package is part of java.base module. This package contains the most important APIs and ...

  10. java中decrement,Java LongAdder decrement()用法及代码示例

    Java中的LongAdder类创建一个初始和为零的新加法器. Java.LongAdder.decrement()是Java中的内置方法,可将值减少1. 用法: public void decrem ...

最新文章

  1. BZOJ1391: [Ceoi2008]order
  2. 2020 China Collegiate Programming Contest Changchun F - Strange Memory(dsu on tree + 位运算小技巧)
  3. 使用com.sun.imageio.plugins.png.PNGMetadata读取图片的元数据
  4. python之flask框架详解
  5. java中8种基本类型与运算符
  6. java面试常见问题
  7. python 矩阵除法_Python线性代数学习笔记——矩阵的基本运算和基本性质,实现矩阵的基本运算...
  8. CA ARCserve Backup系列(1)—安装
  9. C++静态库和动态库用法
  10. Stata15 Unicode:一次性转码,解决中文乱码问题
  11. android 仿饿了么地图,微信小程序仿饿了么地址定位、筛选与回传
  12. 解决raise OSError(“Truncated File Read“)OSError: Truncated File Read
  13. 百度竞价如何过滤无效点击
  14. 简单几步解决ie打不开闪退的问题 亲测有效
  15. 树莓派+PHP+Mairadb数据库读取DHT11
  16. NetSpider 网络蜘蛛1.0 的简介
  17. 行人重识别(3)——行人重识别(基于图像)综述
  18. Euler Finance 完成 3200 万美元融资 Haun Ventures 领投
  19. 广告行业中那些趣事系列51:超牛的kaggle比赛Favorita Grocery Sales Forecasting冠军方案...
  20. 外行对程序员误会有多深!扎心了!

热门文章

  1. oracle mac版安装步骤,Mac版安装oracle教程
  2. python水仙花数的编程代码-Python 求“水仙花数”的方法和具体代码
  3. 计算机软考网络工程师,软考之网络工程师总结
  4. 速卖通开放平台调用菜鸟组件实现云打印
  5. 用什么工具可以制作gif?分享一款在线制作gif动画工具
  6. linux点亮桌面,教你如何点亮自己的Ubuntu 屏幕
  7. 万字长文干货,广告投放中常说的CPA、CPC、CPD、CPT、CPS、CPM、CPI是什么意思?
  8. 学习编程需不需要背代码。
  9. 软测人员周报怎么写?(模板)
  10. vasp计算脚本放在服务器的位置,vasp计算所需服务器配置