Groovy:扩展类的方法(一)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Groovy:扩展类的方法(一)相关的知识,希望对你有一定的参考价值。

参考技术A 1、创建扩展类并实现扩展方法(以String类为例):

2、添加配置文件(mainfest/META-INF/services/org.codehaus.groovy.rumtime.ExtensionModule):

目录结构:

3、编译

4、打包

5、运行
Test.groovy

输出 true

最终的目录结构:

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





一、Groovy 扩展方法引入



Groovy 可以对 JDK 中的一些类进行 方法扩展 , 这些 JDK 自带类可以执行额外的扩展方法 ;

在之前的博客 【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器客户端完整代码示例 | 运行服务器端与客户端效果及过程分析 ) 中 , 使用了

Thread.start 

用法 , 在闭包中执行的就是线程 Threadrun 方法内容 ;





二、 分析 Groovy 中 Thread 类的 start 扩展方法



分析该为 Thread 类扩展的 start 扩展方法 , 扩展方法定义在了 DefaultGroovyStaticMethods 类中 ;

start 方法接收一个 Thread self 线程对象 参数 和 Closure closure 闭包参数 ;

指定为哪个类定义扩展方法 : 第一个参数 Thread self , 表示只能在 Thread 对象上调用该 start 扩展方法 , 其它非 Thread 类型的对象 , 无法调用该 start 方法 ;

指定扩展方法的参数 : 第二个参数 Closure closure , 表示为 Thread 类扩展的 start 方法参数是 闭包 类型 ;


Thread 类的 start 扩展方法 源码 :

/**
 * 这个类定义了groovy环境中普通JDK类上出现的所有新的静态groovy方法。
 * 静态方法与第一个参数一起用作目标类。
 */
public class DefaultGroovyStaticMethods 

    /**
     * 以给定的闭包作为可运行实例启动线程。
     *
     * @param self    Groovy类别使用的占位符变量;默认静态方法忽略
     * @param closure 可运行的闭包
     * @return 返回已经启动的线程 
     * @since 1.0
     */
    public static Thread start(Thread self, Closure closure) 
        return createThread(null, false, closure);
    

以上是关于Groovy:扩展类的方法(一)的主要内容,如果未能解决你的问题,请参考以下文章

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

GroovyGroovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )

GroovyGroovy 方法调用 ( 使用 对象名.成员名 访问 Groovy 类的成员 | 使用 对象名.‘成员名‘ 访问类的成员 | 使用 对象名[‘成员名‘] 访问类成员 )

Groovy06_Groovy方法扩展与脚本调用

Groovy06_Groovy方法扩展与脚本调用

Groovy 元类,模拟具有 throws 子句的服务方法