WEB开发网
开发学院软件开发Java 实战 Groovy: Groovy:Java 程序员的 DSL 阅读

实战 Groovy: Groovy:Java 程序员的 DSL

 2009-09-28 00:00:00 来源:WEB开发网   
核心提示: 清单 9. Groovy POGOclassGroovyPerson{StringfirstNameStringlastName}除非您另外指定,否则 Groovy 中的所有类都是 public 的,实战 Groovy: Groovy:Java 程序员的 DSL(7),所有属性都是 privat

清单 9. Groovy POGO

class GroovyPerson{
  String firstName
  String lastName
}

除非您另外指定,否则 Groovy 中的所有类都是 public 的。所有属性都是 private 的,而所有方法都是 public 的。编译器将为每个属性自动提供一组 public getter 和 setter 方法。用 javac 编译 JavaPerson 并用 groovyc 编译 GroovyPerson。现在通过 javap 运行它们以确认该 Groovy 示例拥有 Java 示例所拥有的所有内容,甚至可以扩展 java.lang.Object(在先前的 HelloGroovyWorld 示例中未指定类,因此 Groovy 转而创建了扩展 groovy.lang.Script 的类)。

所有这些意味着您可以立即开始使用 POGO 作为 POJO 的替代选择。Groovy 类是只剩下基本元素的 Java 类。在编译了 Groovy 类之后,其他 Java 类可以轻松地使用它,就好像它是用 Java 代码编写的。为了证明这一点,请创建一个名为 JavaTest.java 的文件并添加清单 10 中的代码:

清单 10. 从 Java 代码中调用 Groovy 类

public class JavaTest{
  public static void main(String[] args){
    JavaPerson jp = new JavaPerson();
    jp.setFirstName("John");
    jp.setLastName("Doe");
    System.out.println("Hello " + jp.getFirstName());
    GroovyPerson gp = new GroovyPerson();
    gp.setFirstName("Jane");
    gp.setLastName("Smith");
    System.out.println("Hello " + gp.getFirstName());
  }
}

即使 getter 和 setter 不显示在 Groovy 源代码中,这项测试也证明了它们是存在于经过编译的 Groovy 类中并且完全可以正常运行。但是如果我不向您展示 Groovy 中的相应测试,则这个示例不算完整。创建一个名为 TestGroovy.groovy 的文件并添加清单 11 中的代码:

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:实战 Groovy Groovy

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接