Diamond Operator
Groovy 作为 jvm 世界的皇储,自然和 Java 的关系非同一般。对于即将揭开面纱的 JDK 7 而言,Groovy 将在 1.9 版本中提供语言级别的对应。但是,有一个 JDK 7 的新特性在 Groovy 1.8 版本就提前实现了,那就是 Diamond Operator:
1: // old school:
2: List> list2 = new ArrayList<>()
3: // Diamond operator:
4: List> list2 = new ArrayList<>()
嗯,怎么说呢。我想除非是用 Groovy++,否则在 Groovy 代码中,这个操作的意义并不是很大。连同其它 JDK 7 的新特性也是,比如 strings in switch 之类,都可以在 Groovy 本身的特性中找到。所以,除非你奋战在非常底层的代码中,否则我实在想不出这个钻石操作符有啥实际用途。
飞叔:唉,虽然被叫了十几年,昨天一自称飞哥还是被美女吐槽了。所以虽然目前还是很年轻,我依然决定还是自称飞叔
。怎么说八零后也得在九零、零零后面前摆摆姿态的。世界上最痛苦的事情莫过于等待,我等 JDK 7 已经等到呆了……可是在下载了预览版后,还是痛苦的发现并没有什么巨大的改进。2011 年好多东西要等,Diablo III 么我已经等了很多年了,从学 Groovy 前就开始等,等到现在依然在等;ChromeOS 号称在六月要出货了,但要等到一个适合我的版本不晓得还要多久。最痛苦的居然是等来等去还是没到 2012,世界居然还是存在的。新的 DGM 方法
DGM,也就是 DefaultGroovyMethods,是利用 Groovy 的元编程能力注入到普通类中的方法。
在 count 中使用闭包
以前需要先 findAll 再进行size 计算的过程,现在可以用带有闭包的 count 完成:
分组计数:countBy
该方法会将 collection 中的成员代入闭包,并根据闭包返回值进行分组,输出每组的计数