国产探花免费观看_亚洲丰满少妇自慰呻吟_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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄂伦春自治旗| 盐亭县| 南乐县| 武义县| 桐城市| 泌阳县| 尉犁县| 江孜县| 峨边| 大厂| 响水县| 上蔡县| 汉川市| 兰西县| 水城县| 河东区| 牙克石市| 分宜县| 抚宁县| 赞皇县| 武宁县| 绍兴县| 乌拉特前旗| 昂仁县| 岐山县| 剑川县| 上饶县| 津南区| 花垣县| 孟连| 雷波县| 西乌| 疏勒县| 鸡泽县| 大洼县| 景东| 忻城县| 广宁县| 岱山县| 雅江县| 许昌县|