由于内部类存在语义缺陷,所以JCP决定将在Java7或Java8中添加对Closure的支持。而Groovy一开始就洞察到了这点,所以在Groovy中没有内部类,只有Closure,不过为了更好地兼容Java,将在未来的某个版本中支持内部类。现在让我们看看Groovy是如何满足Java开发人员对匿名类的需求的。
1,实现接口
interface
Talkable {
void
sayHello(String name)
}
def man
=
[
//
实现接口
sayHello:{String name
->
println
"
Hello, $name
"
}
] as Talkable
man.sayHello(
"
Daniel
"
)
运行结果:
Hello, Daniel
2,继承抽象类abstract class Human {
abstract void sayHello(String name)
}
def man = [
// 实现抽象方法
sayHello:{String name -> println "Hello, $name"}
] as Human
man.sayHello("Daniel")
运行结果:
Hello, Daniel
其实说‘替代匿名类’有点不太贴切 :)附:
朝花夕拾——Groovy & Grails
posted on 2007-11-04 11:03
山风小子 阅读(3246)
评论(8) 编辑 收藏 所属分类:
Groovy & Grails