简介
Groovy是一种基于JVM的强大的动态语言,它是成熟的面向对象编程语言,同时又可以用作纯粹的脚本语言。由于其简单而熟悉的语法,能够很大程度上提升Java平台开发人员的生产力。它能够和Java程序无缝衔接,然后使得你的程序具备其强大的特性,包括其脚本、域专用语言,运行时以及编译时的元编程、功能编程。
Groovy和Java语法上的一些区别
- 方法的最后一句会作为返回值;
- 一个语句结束可以没有分号;
- 自动生成getter以及setter;
- 可以以”object.fieldName”的方式访问属性字段;
- 使用“==”比较null值的对象与其他对象不会抛出空指针异常。
Groovy的高效特性
1.可选类型定义变量
例如
/**不必声明变量类型**/
def myAge=21;
2.assert断言
/**这个断言当然是不成功的,因为之前已经声明过myAge=21**/
assert myAge==22;
3.括号是可选的
/**以下两句代码执行的效果是一致的**/
println(myAge);
println myAge;
4.字符串
/**Groovy的字符串有3种形式**/
def s1="Java";
def s2='Groovy';
def s3='''python''';
/**它们的区别在于'xxx'仅仅表示字符串,而"xxx"可以插入变量,例如`"I'm ${myAge} years old"`,当使用'''xxx'''来表示字符串时,则可以在字符串中保留换行。**/
5.集合API
def buildTools=['ant','maven'];
/**定义了一个list,其默认对应的Java类型是ArrayList**/
buildTools << 'gradle'
/**表示向buildTools中追加元素**/
def buildYears=['ant':2000,'maven':2004];
/**表示定义了一个map,对应Java中的LinkedHashMap**/
buildYears.gradle=2009;
/**表示向map添加了一个key为'gradle'的元素,value为2009**/
println buildYears.ant;
println buildYears['maven'];
/**以上两种形式都能够访问map中的元素**/
6.闭包简洁介绍
/**闭包是一个代码块**/
def c1={
/**v1表示闭包入参,箭头后表示方法体**/
v1 ->
print v1;
}
def c2={
print 'hello';
}
/**构建以闭包为参数的方法**/
def method1(Closure closure){
/**该闭包传入'param'参数**/
closure('param');
}
def method2(Closure closure){
/**该闭包无参**/
closure();
}