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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【Groovy】MOP 元对象协议与元编程 ( Expando 动态类 | 创建动态类 | 为动态类增加字段和方法 )

發布時間:2025/6/17 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Groovy】MOP 元对象协议与元编程 ( Expando 动态类 | 创建动态类 | 为动态类增加字段和方法 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、Expando 動態類簡介
  • 二、動態類創建
  • 三、為動態類增加字段和方法
  • 四、完整代碼示例





一、Expando 動態類簡介



Groovy 運行時 , 可以動態地創建一個類 , 該類稱為 " 動態類 " ;

這個類運行前并不存在 , 沒有通過 class 定義該類 , 而是在 運行時通過代碼創建的 ;

Groovy 提供了一個 groovy.util.Expando 類 , 該類專門用于創建 " 動態類 " ;


Expando 動態類原型如下 :

package groovy.util;/*** 表示一個動態可擴展的bean。*/ public class Expando extends GroovyObjectSupport {// 動態類 屬性 , 封裝在該映射集合 Map 中private Map expandoProperties;public Expando() {}public Expando(Map expandoProperties) {this.expandoProperties = expandoProperties;} }



二、動態類創建



Expando 構造函數可以接受鍵值對作為參數 ,

public class Expando extends GroovyObjectSupport {// 動態類 屬性 , 封裝在該映射集合 Map 中private Map expandoProperties;public Expando(Map expandoProperties) {this.expandoProperties = expandoProperties;} }

如果要在動態類中設置 name 屬性 , 在構造函數中傳入

name: "Tom",

參數即可 , 如果為動態類設置 hello 方法 , 在構造函數中傳入

hello: {println "Hello!"}

參數 ;

代碼示例 :

// 創建動態類 def student = new Expando(// 動態類屬性name: "Tom",// 動態類成員方法hello: {println "Hello!"} )



三、為動態類增加字段和方法



在動態類創建完畢之后 , 使用

動態類.屬性名 = 屬性值

的方式 , 為動態類增加屬性 ,

// 為動態類增加屬性 student.age = 18

使用

動態類.方法名 = {閉包}

的方式 , 為動態類增加方法 ;

// 為動態類增加方法 student.hello2 = {println "Hello2!!" }

代碼示例 :

// 創建動態類 def student = new Expando(// 動態類屬性name: "Tom",// 動態類成員方法hello: {println "Hello!"} )// 為動態類增加屬性 student.age = 18// 為動態類增加方法 student.hello2 = {println "Hello2!!" }



四、完整代碼示例



完整代碼示例 :

// 創建動態類 def student = new Expando(// 動態類屬性name: "Tom",// 動態類成員方法hello: {println "Hello!"} )// 為動態類增加屬性 student.age = 18// 為動態類增加方法 student.hello2 = {println "Hello2!!" }// 打印動態類字段 println student.name println student.age// 調用動態類方法 student.hello() student.hello2()

執行結果 :

Tom 18 Hello! Hello2!!

總結

以上是生活随笔為你收集整理的【Groovy】MOP 元对象协议与元编程 ( Expando 动态类 | 创建动态类 | 为动态类增加字段和方法 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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