国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Groovy的EMC注入

2019-11-08 01:56:29
字體:
來源:轉載
供稿:網友

Groovy的EMC注入

1、通過往類的MetaClass中添加方法,可以向類中注入方法。
class AGroovyClass {}obj = new AGroovyClass()AGroovyClass.metaClass.add = {val1, val2 -> val1 + val2 }try {	obj.add(11, 13)} catch (ex) {	PRintln "error" // add方法添加在obj初始化之后,obj沒有add方法}println new AGroovyClass().add(11, 13) // 24println new AGroovyClass().add("Hello ", "World!") // Hello World!2、如果父類的metaClass中注入了該方法,子類中也能調用。
class AGroovyClass {}class A extends AGroovyClass {}class B extends AGroovyClass {}AGroovyClass.metaClass.add = {val1, val2 -> val1 + val2 }println new A().add(11, 13) // 24println new B().add("Hello ", "World!") // Hello World!3、靜態方法注入,使用static關鍵字。
class AGroovyClass {}AGroovyClass.metaClass.'static'.add = {val1, val2, -> val1 + val2 }println AGroovyClass.add(11, 13) // 24println AGroovyClass.add("Hello ", "World!") // Hello World!4、構造方法注入,添加一個構造函數,使用<<操作符。覆蓋一個構造函數,使用=操作符。在添加的構造函數內一定返回一個AGroovyClass對象。
class AGroovyClass {	AGroovyClass() {		println "AGroovyClass construct"	}}// 使用<<AGroovyClass.metaClass.constructor << { int val ->	println "AGroovyClass construct(integer)"	new AGroovyClass()}new AGroovyClass(1)// 需要使用=AGroovyClass.metaClass.constructor = { 	println "AGroovyClass construct()"	con = AGroovyClass.class.getConstructor(null)	con.newInstance(null)}new AGroovyClass()返回AGroovyClass construct(integer)AGroovyClass constructAGroovyClass construct()AGroovyClass construct5、EMC分組語法,整合所有的方法。
class AGroovyClass {    AGroovyClass() {        println "AGroovyClass construct"    }}AGroovyClass.metaClass {    add = {val1, val2 ->        val1 + val2    }    'static' {        add = { val1, val2, val3 -> val1 + val2 + val3 }        del = { -> "in del function" }    }    constructor = { int val ->        println "AGroovyClass construct(integer)"        new AGroovyClass()    }    constructor = {         println "AGroovyClass construct()"        con = AGroovyClass.class.getConstructor(null)        con.newInstance(null)    }}new AGroovyClass(1)println new AGroovyClass().add(11, 13)println AGroovyClass.add(11, 13, 15)println AGroovyClass.del()返回AGroovyClass construct(integer)AGroovyClass construct()AGroovyClass constructAGroovyClass construct()AGroovyClass construct2439in del function
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天门市| 报价| 沅江市| 洛川县| 孟津县| 修文县| 新余市| 郓城县| 太原市| 贵定县| 文昌市| 兴城市| 云浮市| 正宁县| 东平县| 乌兰浩特市| 十堰市| 临桂县| 渑池县| 紫阳县| 麦盖提县| 江西省| 永安市| 左权县| 卢龙县| 乌兰察布市| 徐汇区| 昌宁县| 桐庐县| 鸡泽县| 荆州市| 宝兴县| 连城县| 麦盖提县| 信丰县| 上栗县| 湾仔区| 天门市| 大余县| 申扎县| 平邑县|