文章目录

  • 一、编译时处理 ASTTransformation 接口实现
  • 二、配置 ASTTransformation

一、编译时处理 ASTTransformation 接口实现


声明 ASTTransformation 接口子类 , 并使用 @GroovyASTTransformation 注解修饰该类 ; 在实现的 void visit(ASTNode[] nodes, SourceUnit source) 方法中进行编译时处理 ;

import org.codehaus.groovy.ast.ASTNode
import org.codehaus.groovy.control.SourceUnit
import org.codehaus.groovy.transform.ASTTransformation
import org.codehaus.groovy.transform.GroovyASTTransformation@GroovyASTTransformation
class MyASTTransformation implements ASTTransformation {/*** 编译时处理方法* @param nodes AST 抽象语法树节点 , 是 ASTNode 数组类型* @param source 源单元 , 可以通过该对象拿到源文件*/@Overridevoid visit(ASTNode[] nodes, SourceUnit source) {println nodesprintln source}
}

二、配置 ASTTransformation


Y:\002_WorkSpace\003_IDEA\Groovy_Demo2\src\main\groovy\ 目录下 , 创建 resources\META-INF\services\ 目录层级 , 然后在 Y:\002_WorkSpace\003_IDEA\Groovy_Demo2\src\main\groovy\resources\META-INF\services 目录下创建 org.codehaus.groovy.transform.ASTTransformation 文件 , 注意在 org.codehaus.groovy.transform.ASTTransformation 文件中写上 ASTTransformation 实现类的全类名 , 此处没有创建包 , 因此全类名是

MyASTTransformation

Y:\002_WorkSpace\003_IDEA\Groovy_Demo2\src\main\groovy\resources\META-INF\services\org.codehaus.groovy.transform.ASTTransformation 文件内容如下 :

【Groovy】编译时元编程 ( 编译时处理 ASTTransformation 接口实现 | 配置 ASTTransformation )相关推荐

  1. 【Groovy】编译时元编程 ( 编译时方法注入 | 使用 buildFromSpec、buildFromString、buildFromCode 进行方法注入 )

    文章目录 一.在 MyASTTransformation#visit 方法中进行方法注入 1.使用 new AstBuilder().buildFromSpec 进行方法注入 2.使用 new Ast ...

  2. 【Groovy】编译时元编程 ( 编译时方法拦截 | 在 MyASTTransformation#visit 方法中进行方法拦截 )

    文章目录 一.在 MyASTTransformation#visit 方法中进行方法拦截 二.完整代码示例及进行编译时处理的编译过程 1.Groovy 脚本 Groovy.groovy 2.ASTTr ...

  3. 【Groovy】编译时元编程 ( 编译时元编程引入 | 声明需要编译时处理的类 | 分析 Groovy 类的 AST 语法树 )

    文章目录 一.编译时元编程引入 二.声明需要编译时处理的类 三.分析 Groovy 类的 AST 语法树 一.编译时元编程引入 在之前的 " [Groovy]MOP 元对象协议与元编程 &q ...

  4. 【Groovy】编译时元编程 ( 编译 ASTTransformation | 打包 ASTTransformation 字节码文件 | 编译 Groovy 类同进行编译时处理 )

    文章目录 一.编译 ASTTransformation 二.打包 ASTTransformation 字节码文件 三.编译 Groovy 类同进行编译时处理 一.编译 ASTTransformatio ...

  5. 【Groovy】编译时元编程 ( 方法拦截时用到的 AST 语法树节点 MethodNode 节点 | MethodNode 节点分析 | MethodNode 节点中的BlockStatement)

    文章目录 一.方法拦截时用到的 AST 语法树节点 MethodNode 节点 二.MethodNode 节点分析 三.MethodNode 节点中的 BlockStatement 集合 一.方法拦截 ...

  6. 【Groovy】编译时元编程 ( ASTTransformation#visit 方法简介 | org.codehaus.groovy.ast.ModuleNode 脚本节点 )

    文章目录 一.ASTTransformation#visit 方法简介 二.org.codehaus.groovy.ast.ModuleNode 脚本节点 一.ASTTransformation#vi ...

  7. 【Groovy】编译时元编程 ( AST 语法树分析 | ClassNode 根节点 | 方法 Methods 节点 | 字段 Fields 节点 | 属性 Properties 节点 )

    文章目录 一.AST 语法树分析 一.AST 语法树分析 在上一篇博客 [Groovy]编译时元编程 ( 编译时元编程引入 | 声明需要编译时处理的类 | 分析 Groovy 类的 AST 语法树 ) ...

  8. 【Groovy】Groovy 语言特点简介 ( 支持 Java 语法 | 支持 Java 虚拟机 | Groovy 语言是动态语言 | Groovy 扩展 JDK | 编译时元编程 )

    文章目录 一.Groovy 支持 Java 语法 二.Groovy 支持 Java 虚拟机 三.Groovy 语言是 动态语言 四.Groovy 扩展 JDK 五.Groovy 编译时元编程 一.Gr ...

  9. 【Groovy】编译时元编程 ( 利用注解进行 AST 语法树转换 | 定义注解并使用 GroovyASTTransformationClass 注明 AST 转换接口 | AST 转换接口实现 )

    文章目录 一.利用注解进行 AST 语法树转换 1.定义注解并使用 GroovyASTTransformationClass 注明 AST 转换接口 2.AST 转换接口实现 3.定义 Groovy ...

最新文章

  1. 标签之美三——超链接的嵌入
  2. mariadb 和mysql主从_MariaDB主从同步
  3. java 两个日期的天数_java计算两个日期之间的天数
  4. 某业务自助开通账户问题排查
  5. linux 脚本 DIST,shell 脚本判断linux 的发行版本
  6. [上下界网络流][二分] Bzoj P2406 矩阵
  7. commonJS — DOM操作(for DOM)
  8. 实例21:python
  9. 时域补零对于DFT谱的影响
  10. UI素材模板|优秀的后台管理系统UI面板
  11. 【重要+细节】LeetCode 149. Max Points on a Line
  12. [SQL入门级] 上篇被移出园子首页,那这篇咱就'薄利多销'
  13. 计算机应用基础考试excel操作题,自学考试_《计算机应用基础》_上机操作_模拟练习题...
  14. 解决“ Error L6218E Undefined symbol enet_delay (referred from xxxx.o)”问题
  15. 高清车牌识别系统无法连接服务器,智能停车场高清车牌识别系统,常见的故障及解决方法!...
  16. 创蓝253国际短信调用接口说明
  17. lamp环境实战操作建立完全属于自己的博客站点
  18. ASCII码_字符与数字转换等问题
  19. Simple React Snippets快捷
  20. 2022年3,4月份期间UE虚幻引擎的避坑指南

热门文章

  1. MySQL数据库服务器的架设
  2. HTML5/CSS3系列教程:使用SVG图片
  3. server日期函数
  4. C及C++中typedef的简单使用指南
  5. TCP/IP 协议簇 端口 三次握手 四次挥手 11种状态集
  6. usb-to-isp-for-stm32
  7. 一个经典的字母排列算法
  8. 【poj3734】矩阵乘法求解
  9. 网站最令人讨厌的几个用户体验
  10. Angular 一个简单的指令实现 阻止事件扩散