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

举报
韩曙亮 发表于 2022/01/11 22:26:40 2022/01/11
【摘要】 文章目录 一、扩展静态方法示例二、扩展实例方法示例三、扩展实例方法与扩展静态方法代码相同 一、扩展静态方法示例 在上一篇博客 【Groovy】Groovy 扩展方法...





一、扩展静态方法示例



在上一篇博客 【Groovy】Groovy 扩展方法 ( Groovy 扩展方法引入 | 分析 Groovy 中 Thread 类的 start 扩展方法 ) 中 , 分析 Thread 的扩展方法 start 方法 , 该方法调用如下 ,

Thread.start {
}

  
 
  • 1
  • 2

这个为 Thread 扩展的方法是一个静态方法 ;

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11




二、扩展实例方法示例



声明 InputStream 实例对象 , 该实例对象可以调用 getText 扩展方法 ;

InputStream inputStream
inputStream.getText()

  
 
  • 1
  • 2

在这里插入图片描述
使用 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);
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13




三、扩展实例方法与扩展静态方法代码相同



这说明 无论为类 扩展 实例方法 , 还是 扩展 静态方法 , 定义的扩展方法都是 static 静态的 ;

真正用于区分 扩展的是 实例方法 还是 静态方法 , 是在 manifest.META-INF.services 目录 中的 org.codehaus.groovy.ExtensionModule 文件 中的不同配置决定的 ;

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/122418387

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。