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

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Groovy编译时元编程 ( 编译时元编程引入 | 声明需要编译时处理的类 | 分析 Groovy 类的 AST 语法树 )相关的知识,希望对你有一定的参考价值。

文章目录





一、编译时元编程引入



在之前的 " 【Groovy】MOP 元对象协议与元编程 " 系列博客中 , 都是围绕 MetaClass 的 " 运行时元编程 " , 其在运行时才进行相关的元编程操作 , 如方法注入 , 方法委托等 ;

在编译时也可以进行元编程操作 ;

在 Java 和 android 中 , 可以使用 注解处理器 AbstractProcessor 实现 APT 编译时技术 , 参考 【Android APT】 专栏 ;

在 Groovy 中实现的编译时技术 , 类似于 Java 中的编译时技术 ;





二、声明需要编译时处理的类



声明一个 Student 类 , 在其中定义成员变量和成员方法 ; 之后需要在编译时处理该类 ;

class Student
    def name
    def hello()
        println "hello"
    





三、分析 Groovy 类的 AST 语法树



参考 【Groovy】Groovy 环境搭建 ( 下载 Groovy | 安装 Groovy | 配置 Groovy 环境变量 ) 博客 , 配置环境变量后 , 执行

groovyConsole

命令 , 启动 Y:\\001_DevelopTools\\024_Groovy\\groovy-4.0.0\\bin\\groovyConsole.bat 程序 , 如果在 Linux 中启动的是 groovyConsole 可执行文件 ;

启动后 , 弹出 GroovyConsole 工具如下 :

向其中拷贝 Student 类代码 ,

class Student
    def name
    def hello()
        println "hello"
    

选择 GroovyConsole 工具菜单栏 Script 下的 Inspect AST 选项 , 分析上述 Student 类的 AST 语法树 ;

分析结果在 Groovy AST Browser 对话框中显示 ;

以上是关于Groovy编译时元编程 ( 编译时元编程引入 | 声明需要编译时处理的类 | 分析 Groovy 类的 AST 语法树 )的主要内容,如果未能解决你的问题,请参考以下文章

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

Groovy11_编译时元编程

Groovy11_编译时元编程

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

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

Groovy编译时元编程 ( 编译时处理 ASTTransformation 接口实现 | 配置 ASTTransformation )