【Groovy】Groovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )
文章目錄
- 一、擴展靜態(tài)方法示例
- 二、擴展實例方法示例
- 三、擴展實例方法與擴展靜態(tài)方法代碼相同
一、擴展靜態(tài)方法示例
在上一篇博客 【Groovy】Groovy 擴展方法 ( Groovy 擴展方法引入 | 分析 Groovy 中 Thread 類的 start 擴展方法 ) 中 , 分析 Thread 的擴展方法 start 方法 , 該方法調(diào)用如下 ,
Thread.start { }這個為 Thread 擴展的方法是一個靜態(tài)方法 ;
/*** 以給定的閉包作為可運行實例啟動線程。** @param self Groovy類別使用的占位符變量;默認靜態(tài)方法忽略* @param closure 可運行的閉包* @return 返回已經(jīng)啟動的線程 * @since 1.0*/public static Thread start(Thread self, Closure closure) {return createThread(null, false, closure);}二、擴展實例方法示例
聲明 InputStream 實例對象 , 該實例對象可以調(diào)用 getText 擴展方法 ;
InputStream inputStream inputStream.getText()
使用 InputStream 類無法調(diào)用 getText() 方法 ;
這說明 為 InputStream 擴展的 getText 方法 , 是一個 實例方法 , 只有實例對象能調(diào)用該擴展方法 , 類無法調(diào)用該擴展方法 ;
查看為 InputStream 擴展的 getText() 方法的源碼 : 該擴展方法是 static 修飾的 ;
/*** 讀取此InputStream的內(nèi)容并將其作為字符串返回。* 流在該方法返回之前關閉。** @param is 輸入流* @return 返回 URL 獲取的字符串文本* @throws IOException 如果 IO 異常 發(fā)生.* @since 1.0*/public static String getText(InputStream is) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(is));return getText(reader);}三、擴展實例方法與擴展靜態(tài)方法代碼相同
這說明 無論為類 擴展 實例方法 , 還是 擴展 靜態(tài)方法 , 定義的擴展方法都是 static 靜態(tài)的 ;
真正用于區(qū)分 擴展的是 實例方法 還是 靜態(tài)方法 , 是在 manifest.META-INF.services 目錄 中的 org.codehaus.groovy.ExtensionModule 文件 中的不同配置決定的 ;
總結(jié)
以上是生活随笔為你收集整理的【Groovy】Groovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Groovy】Groovy 扩展方法
- 下一篇: 【Groovy】Groovy 扩展方法