【Groovy】Groovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )
生活随笔
收集整理的這篇文章主要介紹了
【Groovy】Groovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、擴展靜態方法示例
- 二、擴展實例方法示例
- 三、擴展實例方法與擴展靜態方法代碼相同
一、擴展靜態方法示例
在上一篇博客 【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 文件 中的不同配置決定的 ;
總結
以上是生活随笔為你收集整理的【Groovy】Groovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Groovy】Groovy 扩展方法
- 下一篇: 【Groovy】Groovy 扩展方法