4、静态import
我是最早在.net framework 3.5上使用类似import static这种语法的,用起来相当方便的说,但JDK一直没有引入这玩意儿,按道理说加上这么个小功能是很容易实现的。不过Groovy倒是带来来功能更强大的import static语法,用起来也很方便:
这玩意儿的主要作用就是避免重复书写哪些又臭又长的类名,随着JDK类库的不断增加,类名字是越来越长,像造句一样,import static恰好解决了这一问题,还是很贴心的。5、分支结构语句
Groovy的结构化语句仍旧是三种:顺序结构、分支结构和循环结构,其中分支结构和循环结构增加了很多意想不到的功能,先看分支结构:
- 常量true和false分别表示“真”和“假”;
- null表示false,非null表示true;
- 空字符串""表示false,非空字符串表示true;
- 0表示false,非0表示true;
- 空集合表示false,非空集合表示true;
Groovy中对于switch语句的修改也是非常夸张的,这让我甚至有些怀疑Groovy中的switch是否还能达到O1的执行效率,因为Groovy的swtich表现的太像嵌套的if...else if了,在例子中,switch的case后面可以跟随如下几种玩意儿:
- 常量,在Groovy中,case后的常量包括数值型常量或字符串类型常量,方便很多了,JDK7中新增加了使用字符串常量的case语句,而在.net framework 1.1中早就有了,诸如Basic,PHP,Python,Javascript等脚本,更是一开始就支持字符串常量的case语句;
- Range:即范围,语法 n1 .. n2 表示n1和n2之间的所有数值n(n1 <= n <= n2);
- Collection:集合,语法 [a1, a2, a3, ... , an],表示由中括号中的n个元素构成的集合,其中各个元素类型不必统一;
- 闭包:由 { 语句 } 构成的匿名函数体,这个后面会重点讲述,这里只要知道,一旦case之后的闭包返回true,则冒号之后的代码将会执行;