日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Groovy】闭包 Closure ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 )

發布時間:2025/6/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Groovy】闭包 Closure ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、閉包定義
  • 二、閉包類型
  • 三、查看編譯后的字節碼文件中的閉包類型變量





一、閉包定義



閉包 Closure 是 Groovy 中最常用的特性 , 使用閉包作為參數是 Groovy 語言的明顯特征 ;

閉包的最基本形態如下 :

// 定義閉包變量 def closure = {}

上述 closure 變量就是一個閉包 ;

閉包可以看做一個 代碼塊 , 執行該閉包 , 就是執行該代碼塊內容 ;





二、閉包類型



閉包的類型是 Closure , 可以調用上述 def closure 變量的 getClass 方法 , 查詢該閉包的類型 ;

// 打印閉包變量類型 println closure.getClass()

打印的閉包類型是

class Test$_main_closure1

Test$_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 ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。