Groovy 语法糖

Groovy 是 JVM 平台上的一种面向对象且同时支持静态动态的脚本语言,语法和 Java 区别不大,提供了一些语法糖,代码的表达能力更强。本文主要介绍 Groovy 比 Java 多出的语法糖,以及使用较多的 DSL。

初次接触到 Groovy 是公司的一个项目,这个项目的目的就是替换掉以前用 java 编写的一个功能,而这个功能的稳定性受限于第三方厂商以及客户所以变动非常大,使用 java 每次做修改需要重新编译打镜像十分痛苦。而使用 Groovy 来实现,我们可以直接修改源码就可以解决技术支持在客户环境上的尴尬,一会传一个镜像,会降低客户对我们产品的信心。

Gradle,Spring Cloud Contract 等等都支持 Groovy 作为 DSL(领域专用语言),同时 Groovy 在测试领域也有一席之地,因为语法简单,可以很快捷的编写 Test Case,总之可以把 Groovy 看作 Java 的小伙伴,好帮手。

  • 可以用 def 关键字定义变量和方法,编译期做类型推断

  • 多变量同时创建

    def (aa, bb) = [1, 2]
    
  • 范围创建​

    int[] range = 0..10;
    
  • 支持 for in 写法​

    for(variable in range) { 
     statement 
     statement 
     
    }
    
  • 方法参数支持默认值​

    def someMethod(parameter1, parameter2 = 0, parameter3 = 0) { 
     // Method code goes here
    

} ​

  • 字符串支持单引号和双引号,类似于 shell,python,双引号中可识别变量​

  • 列表创建​

    List<String> strings = ['a','b']
    
  • map 创建​

    Map<String, String> stringMap = ["name": "wang", "age": "99"] 
    
  • 正则表达式,~ 后面直接跟正则语句,可直接用于判断​

    if ( "Groovy" =~ "^G")
    
  • 支持闭包

    def closure = { param -> println  "Hello ${param}" };
    closure.call( "World" );
    
  • instanceof 可以简写成 in

  • 调用 shell 方便​

    println  "ls -l".execute().text