【Groovy】Groovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )
文章目录
- 一、扩展方法示例
- 二、静态扩展方法配置
- 三、编译静态扩展类
- 四、打包静态扩展类字节码到 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
staticExtensionClasses=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 方法 ;
Thread.hello{printf "Hello"
}
在 Terminal 面临中 , 使用命令行执行该 Groovy 脚本 ,
groovy -classpath thread.jar ThreadExtApplication.groovy
执行结果为 :
Hello
【Groovy】Groovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )相关推荐
- 【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )
文章目录 一.扩展方法示例 二.实例扩展方法配置 三.编译实例扩展类 四.打包静态扩展类字节码到 jar 包中 五.测试使用 Thread 实例扩展方法 一.扩展方法示例 为 Thread 扩展 he ...
- java byte 拓展_Java项目中如何扩展第三方jar包中的类?
有些时候你对第三方得到jar包中的类并不是很满意,想根据实际情况做一些扩展.如果说第三方的jar包已经提供了一些可扩展的类,比如提供了Interceptor,Filter或者其他的类,那么使用原生的比 ...
- java执行jar中的main_浅谈java 执行jar包中的main方法
浅谈java 执行jar包中的main方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 ...
- Web项目替换jar包中的文件的方法
经常遇到这样的问题,需要修改jar包中的方法.应该如何做? 1.有些很人性化的框架jar包,比如SpringSecurity,可以修改配置文件指定一个新建的类,让类实现Jar包中的对应的接口就好了. ...
- 通过 getResources 找不到jar包中的资源和目录的解决方法
http://my.oschina.net/sub/blog/184074 今天碰到一个怪问题: 原本跑的好好的代码,打成 jar 包就不能运行了. 问题出在,代码中有一段自动扫描 classpath ...
- java读取同包文件_Java实现从jar包中读取指定文件的方法
本文实例讲述了Java实现从jar包中读取指定文件的方法.分享给大家供大家参考,具体如下: 以下的Java代码实现了从一个jar包中读取指定文件的功能: /** * This class implem ...
- 使用反射获得jar包中的类、方法、参数、返回值类型,然后动态加载jar包运行方法
其实我的需求是在系统中 测试用户导入的jar包,所有网上找了很多解决方案,踩过很多坑,再加上以前搞c++的,对java不是很熟, 这里特意记录下,算是基本满足需求了 使用反射获得jar包中的类.方法. ...
- Java操作Access数据库使用方法及案例 及 所需jar包【源码及jar包在最后下载】
目录 写在前面 数据库编辑软件MDBplus.exe SQL查询语句的差异 字符串转数字 字符串转日期 示例:如下图打开SQL编辑窗口 源码及jar包下载地址 写在前面 最近接了一个项目,就是个简单的 ...
- java打包成jar|执行jar包中的main方法
java打包成jar jar -cvf [jar包的名字] [需要打包的文件] 执行jar包中的main方法 java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 ...
最新文章
- SQL优化这么做就对了
- 女人跳槽:最重要的是你的独立,你的快乐
- C语言二月天数计算,关于计算两个日期间天数的代码,大家来看看
- elasticsearch java_java Elasticsearch详细介绍及使用实例分析
- linux钩子函数和回调函数,Linux Kernel 学习笔记10:hook函数
- SQL Server provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错
- 文档开发工具调研总结
- 小红书面试题——paddingNum,用逗号分割数字串
- encodeURL() vs encodeRedirectURL()
- 常用Linux网络/内存/磁盘分析工具
- [转载] python异常和错误有什么区别_python的错误和异常
- 跨境网上收款 找PayPal没错(获取Client ID 和 secret)
- 如何重启 Windows 10 子系统(WSL) ubuntu
- 小红伞杀毒软件|小红伞杀毒软件下载
- TCPUDP测试工具
- uni-app自动定位当前位置
- 计算机控制系统机器人,机器人的控制系统
- 那些我们想当然的错误[SQL]
- Monyer's Game 0~5关过关方法
- 楚留香服务器维护时间,2019年8月9日官方维护公告