由于內(nèi)部類(lèi)存在語(yǔ)義缺陷,所以JCP決定將在Java7或Java8中添加對(duì)Closure的支持。而Groovy一開(kāi)始就洞察到了這點(diǎn),所以在Groovy中沒(méi)有內(nèi)部類(lèi),只有Closure,不過(guò)為了更好地兼容Java,將在未來(lái)的某個(gè)版本中支持內(nèi)部類(lèi)。現(xiàn)在讓我們看看Groovy是如何滿(mǎn)足Java開(kāi)發(fā)人員對(duì)匿名類(lèi)的需求的。
1,實(shí)現(xiàn)接口
interface
?Talkable?{
????
void
?sayHello(String?name)
}
def?man?
=
?[
????
//
?實(shí)現(xiàn)接口
????sayHello:{String?name?
->
?println?
"
Hello,?$name
"
}
]?as?Talkable
man.sayHello(
"
Daniel
"
)
運(yùn)行結(jié)果:
Hello,?Daniel
2,繼承抽象類(lèi)abstract?class?Human?{
????abstract?void?sayHello(String?name)
}
def?man?=?[
????//?實(shí)現(xiàn)抽象方法
????sayHello:{String?name?->?println?"Hello,?$name"}
]?as?Human
man.sayHello("Daniel")
運(yùn)行結(jié)果:
Hello,?Daniel
其實(shí)說(shuō)‘替代匿名類(lèi)’有點(diǎn)不太貼切 :)附:
朝花夕拾——Groovy & Grails
posted on 2007-11-04 11:03
山風(fēng)小子 閱讀(3257)
評(píng)論(8) 編輯 收藏 所屬分類(lèi):
Groovy & Grails