【Groovy】MOP 元对象协议与元编程 ( Expando 动态类 | 创建动态类 | 为动态类增加字段和方法 )
生活随笔
收集整理的這篇文章主要介紹了
【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 动态类 | 创建动态类 | 为动态类增加字段和方法 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Groovy】MOP 元对象协议与元编
- 下一篇: 【Groovy】MOP 元对象协议与元编