日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 MetaClass 进行方法注入普通方法 )

發(fā)布時(shí)間:2025/6/17 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 MetaClass 进行方法注入普通方法 ) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、使用 MetaClass 進(jìn)行方法注入
  • 二、完整代碼示例





一、使用 MetaClass 進(jìn)行方法注入



定義 Student 類 ,

class Student {def name; }

為該 Student 類注入一個(gè) hello 方法 , 先獲取 Student 類的 metaClass 成員 , 然后為其注入 hello 方法 , 使用 << 符號(hào) , 后面帶上一個(gè)閉包 , 即可注入方法 , 在閉包中 , delegate 就是 Student 對(duì)象 ;

// 向 Student 類注入 hello 方法 Student.metaClass.hello << {println delegateprintln "Hello ${delegate.name}" }

創(chuàng)建 Student 實(shí)例對(duì)象 , 調(diào)用為 Student 類注入的 hello 方法 ,

def student = new Student(name: "Tom") student.hello()

即可打印出

Student@5dd6264 Hello Tom

內(nèi)容 , 其中 Student@5dd6264 是 MetaClass 中的 delegate 代理對(duì)象 ;


此處注意 , 注入方法使用 << 運(yùn)算符 , 替換 / 攔截方法 使用 = 運(yùn)算符 ;

方法注入后 , 在 類 的 metaClass 中注入的方法 , 在任何 Student 對(duì)象中 , 都可以調(diào)用被注入的 hello 方法 ;

但是在 對(duì)象 的 metaClass 中注入的方法 , 只有該 Student 對(duì)象才能調(diào)用被注入的 hello 方法 , 其它對(duì)象不能調(diào)用該注入的方法 ;





二、完整代碼示例



完整代碼示例 :

class Student {def name; }// 向 Student 類注入 hello 方法 Student.metaClass.hello << {println delegateprintln "Hello ${delegate.name}" }/*注入方法使用 <<替換 / 攔截方法 使用 =*/def student = new Student(name: "Tom") student.hello()

執(zhí)行結(jié)果 :

Student@5dd6264 Hello Tom

總結(jié)

以上是生活随笔為你收集整理的【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 MetaClass 进行方法注入普通方法 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。