GroovyGroovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GroovyGroovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )相关的知识,希望对你有一定的参考价值。
一、扩展静态方法示例
在上一篇博客 【Groovy】Groovy 扩展方法 ( Groovy 扩展方法引入 | 分析 Groovy 中 Thread 类的 start 扩展方法 ) 中 , 分析 Thread 的扩展方法 start 方法 , 该方法调用如下 ,
Thread.start
这个为 Thread 扩展的方法是一个静态方法 ;
/**
* 以给定的闭包作为可运行实例启动线程。
*
* @param self Groovy类别使用的占位符变量;默认静态方法忽略
* @param closure 可运行的闭包
* @return 返回已经启动的线程
* @since 1.0
*/
public static Thread start(Thread self, Closure closure)
return createThread(null, false, closure);
二、扩展实例方法示例
声明 InputStream 实例对象 , 该实例对象可以调用 getText 扩展方法 ;
InputStream inputStream
inputStream.getText()
使用 InputStream 类无法调用 getText() 方法 ;
这说明 为 InputStream 扩展的 getText 方法 , 是一个 实例方法 , 只有实例对象能调用该扩展方法 , 类无法调用该扩展方法 ;
查看为 InputStream 扩展的 getText() 方法的源码 : 该扩展方法是 static 修饰的 ;
/**
* 读取此InputStream的内容并将其作为字符串返回。
* 流在该方法返回之前关闭。
*
* @param is 输入流
* @return 返回 URL 获取的字符串文本
* @throws IOException 如果 IO 异常 发生.
* @since 1.0
*/
public static String getText(InputStream is) throws IOException
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
return getText(reader);
三、扩展实例方法与扩展静态方法代码相同
这说明 无论为类 扩展 实例方法 , 还是 扩展 静态方法 , 定义的扩展方法都是 static 静态的 ;
真正用于区分 扩展的是 实例方法 还是 静态方法 , 是在 manifest.META-INF.services 目录 中的 org.codehaus.groovy.ExtensionModule 文件 中的不同配置决定的 ;
以上是关于GroovyGroovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )的主要内容,如果未能解决你的问题,请参考以下文章
GroovyGroovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )
GroovyGroovy 扩展方法 ( Groovy 扩展方法引入 | 分析 Groovy 中 Thread 类的 start 扩展方法 )
GroovyGroovy 脚本调用 ( Linux 中调用 Groovy 脚本 | Windows 中调用 Groovy 脚本 )
GroovyGroovy 语言特点简介 ( 支持 Java 语法 | 支持 Java 虚拟机 | Groovy 语言是动态语言 | Groovy 扩展 JDK | 编译时元编程 )