groovy中多的关键字 in as def
1.循环的简单语法
for(i in 0..9){}
10.times{}
0.upto(9){}
0.step(10,2){}
2.扩展String类
java
Process p = Runtime.getRuntime()
p.execute("dir")
p.getInputStream()....
groovy
"dir".execute().text
3.重载操作符
?. 自动检查空值,为空就直接返回空,不会抛出NullPointerException
$ 可以在字符串中使用${key}来获取当前变量值
<< 使用此操作符可以向集合中添加元素,转换为集合中添加的leftShift()方法
4,异常处理
不用手动处理异常,groovy会自动抛给调用者
5变量方法定义
变量方法都可以用def定义,方法参数类型可以省略,支持可选参数 ex: def methodName(a,b=1){}
6.多赋值
ex:def (firstName,lastName) = "James Bond".split(" ")
7对java5的支持
在java中int可以通过int.class.getName()获得int的类名
,在groovy中声明了int 类型的变量,实际它是Integer的实例
8使用groovy代码生成变化
@Canonical 用在类上是生成的toString方法只包含想生成的字段 ex: @Canonical(exludes="a,b")
@Delegate 在一个类中使用另一个类的方法,只需声明字段 为这个类,加这个注解
A {
method(){
println "aaa"
}
}
B{
@DelegateA a = new A()
}
new B().method();
@Immutable 用注解标注一个类会将其字段自动标注为final
@Lazy 延迟加载
@newify 在类上加上这个注解,声明需要省略new的类的数组,类中可以省略new关键字 ex : new Person("tom") -----------> Person("tom")
@singleton [lazy]
@TypeChecked groovy默认不检查类型,加上激活类型检查
9闭包
声明闭包 Closure closure = {}
<span style="white-space:pre"> </span>DBKit.instance.executeQuery(sql,{ //执行一次查询暴露出resultset
rs ->
if (rs.next())
return rs.getInt(1)+1;
}
使用闭包 closure() or closure.call() 并传递闭包需要的参数
科里化闭包 当给闭包传递参数相同时,可以预编译闭包 cc = closure.curry(相同的参数),cc(不同的参数)
闭包有三个属性 this owner delegate delegate一般会设置为owner
10字符串
单引号的是java字符串
双引号groovy字符串 可使用${}访问变量
三引号 多行字符串
// 也可以创建字符串
正则 ~ // 创建 =~ 执行部分匹配 ==~ 精确匹配
11 使用集合类 类似python列表
参考<<Groovy程序设计>>