【IT168 技术文档】由于内部类存在语义缺陷,所以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
其实说‘替代匿名类’有点不太贴切 :)