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
-
Groovy