文章目录

  • 一、扩展方法示例
  • 二、实例扩展方法配置
  • 三、编译实例扩展类
  • 四、打包静态扩展类字节码到 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

【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )相关推荐

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

    文章目录 一.扩展方法示例 二.静态扩展方法配置 三.编译静态扩展类 四.打包静态扩展类字节码到 jar 包中 五.测试使用 Thread 静态扩展类 一.扩展方法示例 为 Thread 扩展 hel ...

  2. Jar 包依赖冲突排查思路和解决方法(logback + slf4j-log4j12)

    Jar 包依赖冲突排查思路和解决方法 [TOC] 起因 喜大普奔,本期发布中,我们的应用从 jdk7 升级到 jdk8,终于可以用上新特性的语法进行代码编写,通过几轮开发.测试和验证后,在上预发环境时 ...

  3. java byte 拓展_Java项目中如何扩展第三方jar包中的类?

    有些时候你对第三方得到jar包中的类并不是很满意,想根据实际情况做一些扩展.如果说第三方的jar包已经提供了一些可扩展的类,比如提供了Interceptor,Filter或者其他的类,那么使用原生的比 ...

  4. java读取同包文件_Java实现从jar包中读取指定文件的方法

    本文实例讲述了Java实现从jar包中读取指定文件的方法.分享给大家供大家参考,具体如下: 以下的Java代码实现了从一个jar包中读取指定文件的功能: /** * This class implem ...

  5. 使用反射获得jar包中的类、方法、参数、返回值类型,然后动态加载jar包运行方法

    其实我的需求是在系统中 测试用户导入的jar包,所有网上找了很多解决方案,踩过很多坑,再加上以前搞c++的,对java不是很熟, 这里特意记录下,算是基本满足需求了 使用反射获得jar包中的类.方法. ...

  6. Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法

    Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法. 一个Java老项目,更新了日志工具,升级为Log4j2,在引入log4j-api-2.14.0.jar 和log4j-core-2. ...

  7. java执行jar中的main_浅谈java 执行jar包中的main方法

    浅谈java 执行jar包中的main方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 ...

  8. JUnit中测试异常抛出的方法

    最近在做TWU关于TDD的作业,对JUnit中测试异常抛出的方法进行了一些学习和思考. 在进行单元测试的时候有的时候需要测试某一方法是否抛出了正确的异常.例如,我有一个方法,里面对一个List进行读取 ...

  9. Web项目替换jar包中的文件的方法

    经常遇到这样的问题,需要修改jar包中的方法.应该如何做? 1.有些很人性化的框架jar包,比如SpringSecurity,可以修改配置文件指定一个新建的类,让类实现Jar包中的对应的接口就好了. ...

最新文章

  1. npm 卸载_手把手教你创建一个NPM包
  2. byte数组转file不写入磁盘_Linux 环境写文件如何稳定跑满磁盘 I/O 带宽?
  3. VTK:Dijkstra 图形测地线路径用法实战
  4. Java语言类的作用,java 语言Class类的作用,怎么使用?
  5. 美团点评联盟广告场景化定向排序机制
  6. 计算机基础知识第八周,计算机系统基础(一):程序的表示、转换与链接(第八周小测验)...
  7. maven 打包javadoc乱码解决方案
  8. html5语音读取文字_文字识别神器最新版-文字识别神器安卓版下载
  9. web前端【第三篇】CSS选择器
  10. 蓝桥杯2013c++真题:振兴中华
  11. webpack构建工具快速上手指南
  12. Spring Batch系列总括(转载)
  13. 成都程序员俱乐部通知
  14. html购物网页代码大全,HTML常用代码大全
  15. laravel5.5 后台
  16. c语言中指数对数函数,在C语言中使用对数函数的方法
  17. 工作中PUSH用到的统计命令
  18. 64位Windows 8 运行Trial-Reset,但是提示缺少“MSCOMCTL.OCX”的解决方法
  19. powerbi服务器打开文件慢,Power BI 优化指南
  20. VGA接口和HDMI接口有什么区别 哪个好

热门文章

  1. vertical-align
  2. C语言中volatilekeyword的作用
  3. 如何确定一个IAR工程所使用的IAR版本
  4. PLSQL导出表的数据insert语句
  5. Linux vim 梳理
  6. 关于logrotate工具的日志切割
  7. windows2016重新配置sid
  8. 应用 Valgrind 发现 Linux 程序的内存问题 [转]
  9. 团队-石头,剪刀,布-设计文档
  10. 应该了解的Openstack命令