2013-11-04 36 views
0

我knewt如何添加方法的metaClass的java.util.List的:關閉方法添加到的metaClass Groovy類

java.util.List.metaClass.average={ 

     return delegate.sum()/delegate.size(); 
} 

,如果我有def myList=[new Person(score:1),new Person(score:2)],我打電話給新的方法如下:

myList.average(); 

不過,我想叫它如下:

myList.average{it.score} 

我如何添加此方法OD到元類被稱爲閉幕({},而不是()

回答

1

你應該能夠做到:

List.metaClass.average = { Closure c -> 
    delegate.sum(c)/delegate.size() 
} 
+1

Man.metaClass.thanks = {的println 「感謝1000次」}; def tim_yates = new Man(); tim_yates.thanks(); –

+1

@AbdennourToumi'[76,79,76] .collect {(char)it} .join()';-) –