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

简介: 【Groovy】编译时元编程 ( 编译时处理 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 源单元 , 可以通过该对象拿到源文件
     */
    @Override
    void visit(ASTNode[] nodes, SourceUnit source) {
        println nodes
        println source
    }
}



image.png


二、配置 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 文件内容如下 :


image.png



目录
相关文章
|
存储 物联网 网络性能优化
|
12月前
|
消息中间件 监控 物联网
MQTT协议对接及RabbitMQ的使用记录
通过合理对接MQTT协议并利用RabbitMQ的强大功能,可以构建一个高效、可靠的消息通信系统。无论是物联网设备间的通信还是微服务架构下的服务间消息传递,MQTT和RabbitMQ的组合都提供了一个强有力的解决方案。在实际应用中,应根据具体需求和环境进行适当的配置和优化,以发挥出这两个技术的最大效能。
714 0
|
存储 安全 Java
提升编程效率的利器: 解析Google Guava库之集合篇Table二维映射(四)
提升编程效率的利器: 解析Google Guava库之集合篇Table二维映射(四)
|
安全 Java 测试技术
提升编程效率的利器: 解析Google Guava库之集合篇BitMap(三)
提升编程效率的利器: 解析Google Guava库之集合篇BitMap(三)
|
存储 算法 Java
深入解析Java中的ForkJoinPool:分而治之,并行处理的利器
深入解析Java中的ForkJoinPool:分而治之,并行处理的利器
|
存储 Kubernetes 安全
Kubernetes Pod配置:从基础到高级实战技巧
Kubernetes Pod配置:从基础到高级实战技巧
478 0
Python判断回文数
Python判断回文数
|
Dubbo 安全 Java
Dubbo想要个网关怎么办?试试整合Spring Cloud Gateway
在以Dubbo框架体系来构建的微服务架构下想要增加API网关,如果不想自研开发的情况下在目前的开源社区中几乎没有找到支持dubbo协议的主流网关,但是Spring Cloud体系下却有两个非常热门的开源API网关可以选择;本文主要介绍如何通过Nacos整合Spring Cloud Gateway与Dubbo服务。
3471 0
Dubbo想要个网关怎么办?试试整合Spring Cloud Gateway
|
Serverless C++
[C++/PTA] 计算点到直线的距离一一友元函数的应用
[C++/PTA] 计算点到直线的距离一一友元函数的应用
268 0
|
SQL 分布式计算 对象存储
客户说|科脉 x AnalyticDB,Serverless Spark替换CDH助力运维降本80%
使用AnalyticDB Spark替换自建CDHSpark,助力科脉降本增效