GroovyGroovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GroovyGroovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )相关的知识,希望对你有一定的参考价值。





一、扩展方法示例



Thread 扩展 hello 方法 , 在该方法中传入 Closure 参数 , 在该方法中 , 执行传入的闭包参数 ;

class ThreadExt 

    public static Thread hello(Thread self, Closure closure) 
        closure()
        return self
    






二、实例扩展方法配置



工程根目录\\src\\main\\groovy\\ 目录下创建 manifest\\META-INF\\services 目录 ,

工程根目录\\src\\main\\groovy\\manifest\\META-INF\\services 目录下 , 创建 org.codehaus.groovy.runtime.ExtensionModule 配置文件 , 配置如下内容 :

moduleName=groovyExt
moduleVersion=1.0
extensionClasses=ThreadExt

moduleName 是模块名称 , 可以配置一个任意字符串标识符 ,

moduleVersion 是模块版本 ,

staticExtensionClasses 用于配置 静态扩展方法 , extensionClasses 用于配置 实例扩展方法 ;

这里配置的是 实例扩展方法 ;


配置完成后的项目结构如下 :





三、编译实例扩展类



在 Terminal 面板中 , 执行

cd src/main/groovy

命令 , 进入到 src/main/groovy 目录中 ,

然后执行

groovyc -d classes ThreadExt.groovy

命令 , 编译 ThreadExt.groovy 源码到 classes 目录中 ; 其中 ThreadExt.groovy 中定义了 Thread 类的扩展方法 ;


编译过程及结果如下 :





四、打包静态扩展类字节码到 jar 包中



在 执行

jar -cf thread.jar -C classes . -C manifest/ .

命令 , 将 classes 中的字节码文件按照 manifest/ 规则 , 打包到 thread.jar 文件中 ;





五、测试使用 Thread 实例扩展方法



创建一个 Groovy 脚本 , 执行为 Thread 扩展的静态方法 hello 方法 ;

new Thread().hello
    printf "Hello"

在 Terminal 面临中 , 使用命令行执行该 Groovy 脚本 ,

groovy -classpath thread.jar ThreadExtApplication.groovy

执行结果为 :

Hello

以上是关于GroovyGroovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )的主要内容,如果未能解决你的问题,请参考以下文章

GroovyGroovy 脚本调用 ( Linux 中调用 Groovy 脚本 | Windows 中调用 Groovy 脚本 )

GroovyGroovy 扩展方法 ( Groovy 扩展方法引入 | 分析 Groovy 中 Thread 类的 start 扩展方法 )

GroovyGroovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )

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

C#的扩展方法解析

GroovyGroovy 方法调用 ( 使用 对象名.@成员名 访问 Groovy 对象成员 )