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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Groovy對(duì)象

2019-11-08 02:06:51
字體:
供稿:網(wǎng)友

Groovy對(duì)象

在一個(gè)Groovy應(yīng)用中,使用三類對(duì)象,POJO(普通java對(duì)象)、POGO(Groovy對(duì)象,實(shí)現(xiàn)GroovyObject接口)和Groovy攔截器(實(shí)現(xiàn)GroovyInterceptable)。

GroovyObject接口。

package groovy.lang;public interface GroovyObject {	Object invokeMethod(String name, Object args);	Object getPRoperty(String propertyName);	void setProperty(String propertyName, Object newValue);	MetaClass getMetaClass();	void setMetaClass(MetaClass metaClass);}GroovyInterceptable接口。

package groovy.lang;public interface GroovyInterceptable extends GroovyObject {}

Groovy方法調(diào)用順序。

     

1、對(duì)于POJO來說,MetaClass上的方法優(yōu)于原先的方法。

def val = new Integer(3)println val.toString() // 3Integer.metaClass.toString = {-> "Integer toString" }println val.toString() // Integer toString2、對(duì)于GroovyInteceptable來說,不管改方法存不存在,都會(huì)調(diào)用invokeMethod方法。

不能使用println方法,同樣會(huì)被攔截。

class AInterceptable implements GroovyInterceptable {	def add(val1, val2) {		val1 + val2	}		public Object invokeMethod(String name, Object args) {//		println name		System.out.println(name)		System.out.println(args.join(" "))	}}def interceptable = new AInterceptable()interceptable.add(13, 17)interceptable.del("hello")返回add13 17delhello

3、對(duì)于GroovyObject來說

(1)查看方法是否存在MetaClass或原有類中。

class AGroovyClass {    def fun1() {        println "fun1"    }    def methodMissing(String name, args) {        println "methodMissing " + name    }}obj = new AGroovyClass()obj.fun1() // fun1obj.fun2() // methodMissing fun2obj.metaClass.fun2 = { -> println "fun2" }obj.fun2() // fun2(2)查看屬性為該名稱的閉包

class AGroovyClass {	def fun1 = { -> println "fun1 closure" }	def fun2 = { -> println "fun2 closure" }	def fun1() {		println "fun1"	}	def methodMissing(String name, args) {		println "methodMissing " + name    }}obj = new AGroovyClass()obj.fun1() // fun1def fun = obj.fun1fun() // fun1 closureobj.fun2() // fun2 closureobj.fun3() // methodMissing fun3

(3)查看methodmissing方法

class AGroovyClass {	def methodMissing(String name, args) {		println "methodMissing " + name	}	def invokeMethod(String name, args) {		println "invokeMethod " + name	}}obj = new AGroovyClass()obj.fun1() // methodMissing fun1

(4)查看invokeMethod方法。

class AGroovyClass {	def invokeMethod(String name, args) {		println "invokeMethod " + name	}}obj = new AGroovyClass()obj.fun1() // invokeMethod fun1


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 台州市| 尉氏县| 肃北| 安顺市| 四会市| 田林县| 南投市| 平南县| 和静县| 金堂县| 长顺县| 崇信县| 成都市| 三河市| 衡东县| 南雄市| 青浦区| 潜江市| 广灵县| 巴马| 平顶山市| 太保市| 锡林郭勒盟| 乌什县| 湖州市| 遂宁市| 伊金霍洛旗| 白水县| 遵化市| 黎城县| 屯门区| 孟村| 阳朔县| 海安县| 观塘区| 西峡县| 金昌市| 平山县| 南开区| 襄垣县| 卢龙县|