技术开发 频道

Groovy高效编程——用Closure替代匿名类

  【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

  其实说‘替代匿名类’有点不太贴切 :)

0
相关文章