一、Groovy和Java相比的特点
- Groovy完全兼容Java语法。
- 分号是可选的。
- 类、方法默认都是public。
- 编译器自动给属性添加getter/setter方法。
属性可以用点号直接获取。
- 直接使用
点号属性名
访问的是编译器自动添加的getter方法。
- 直接使用
- 最后一个表达式的值会被作为返回值。
- ==等同于equals(),不会有NullPointException异常抛出。
- assert语句进行断言操作。
- 弱类型编程语言 def。
- 可选括号。
字符串三种表达形式,'',"",'''''',
- 单引号就只是一个字符串。
- 双引号中间可以使用${}插入变量
def s2 = "s2 ${version}"
- 三引号里面的内容可以换行。
集合API具有更简单的写法。
// 定义集合 def buildTools = ["ant","maven"] // 添加元素 buildTools << 'gradle' // 默认类型是ArrayList assert buildTools.getClass() == ArrayList assert buildTools.size() == 3 // 定义Map def buildYears = ["ant":2000,"maven":2009] // 添加元素 buildYears << ['gradle':123] // 获取元素 println buildYears.ant // 获取元素 println buildYears.get("maven") // 默认类型是LinkedHashMap assert buildYears.getClass() == LinkedHashMap
闭包(简单理解)。
// 带参数闭包 def c1 = { v -> println v } // 不带参数闭包 def c2 = { println 'hello' } // 方法1,Closure闭包作为参数,不要导入包,导入的包是Java的 def method1(Closure closure){ closure('param') } // 方法2 def method2(Closure closure){ closure() } // 调用,传参 method1(c1) method2(c2)