【Groovy】闭包 Closure ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 )
生活随笔
收集整理的這篇文章主要介紹了
【Groovy】闭包 Closure ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、閉包定義
- 二、閉包類型
- 三、查看編譯后的字節碼文件中的閉包類型變量
一、閉包定義
閉包 Closure 是 Groovy 中最常用的特性 , 使用閉包作為參數是 Groovy 語言的明顯特征 ;
閉包的最基本形態如下 :
// 定義閉包變量 def closure = {}上述 closure 變量就是一個閉包 ;
閉包可以看做一個 代碼塊 , 執行該閉包 , 就是執行該代碼塊內容 ;
二、閉包類型
閉包的類型是 Closure , 可以調用上述 def closure 變量的 getClass 方法 , 查詢該閉包的類型 ;
// 打印閉包變量類型 println closure.getClass()打印的閉包類型是
class Test$_main_closure1Test$_main_closure1 類型 是 Closure 類型的子類 ;
這是 Test 類 中的 , main 函數 中的 , 第 111 個閉包 , 記做 closure1 ;
三、查看編譯后的字節碼文件中的閉包類型變量
查看該 Groovy 代碼的編譯的字節碼文件 , 路徑為 \build\classes\groovy\main\Test.class
Test.groovy 代碼編譯后的字節碼文件內容為 :
import Test._main_closure1; import groovy.lang.GroovyObject; import groovy.lang.MetaClass; import org.codehaus.groovy.runtime.callsite.CallSite;public class Test implements GroovyObject {public Test() {CallSite[] var1 = $getCallSiteArray();MetaClass var2 = this.$getStaticMetaClass();this.metaClass = var2;}public static void main(String... args) {CallSite[] var1 = $getCallSiteArray();Object closure = new _main_closure1(Test.class, Test.class);var1[0].callStatic(Test.class, var1[1].call(closure));}static {__$swapInit();Long var0 = 0L;__timeStamp__239_neverHappen1640701694911 = var0;Long var1 = 1640701694911L;__timeStamp = var1;} }閉包定義的內容是
Object closure = new _main_closure1(Test.class, Test.class);對應如下代碼的閉包變量 :
def closure = {}總結
以上是生活随笔為你收集整理的【Groovy】闭包 Closure ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Groovy】map 集合 ( map
- 下一篇: 【错误记录】Groovy 运行报错 (