Groovy 允许忽略一些在 java 中必须的语法元素,忽略这些元素的结果是代码更简短、更少冗余和更清晰的表述。例如,将一个 String 对象编码为一个 URL 对象,比较它们的 java 和 groovy 的代码:[code]Java:
java.net.URLEncoder.encode(“a b”);
Groovy:
URLEncoder.encode ‘a b’
[/code]groovy 的代码不但更简短,而且以尽可能简单的方法表述了我们的目标。忽略了包的前缀,圆括号和分号,代码量减少到最小。
Groovy 中方法调用的圆括号是可选的,这是建立在消除模棱两可的情况和 groovy 语言规范中概述优先处理规则上的。虽然这些规则清晰,但是有时不够直观,省略括号可能引 起误解,即时编译器喜欢这样的代码,我们更愿意在所有的情况下使用圆括号,但是大多数时候这样做是没有意义的,编译器不会为了可读性来鉴定你的代码——必须自己做这些工作。
Groovy 自动导入以下包和类: groovy.lang.*groovy.util.*
java.lang.* java.util.* java.net.* java.io.*
java.math.BigInteger java.math.BigDecimal
可以直接使用在这些包中的类,而不需要指定包的名称,在这本书中我们始终都会用到这个特性,我们使用全限定类名称来消除模棱两可的情况,或者是需要指定源的地方。
注意 java 只自动导入 java.lang.*。
每个功能点的最重要的工具:assertions(断言)。