Groovy 1.5的新特性

豆豆网   技术应用频道   2008年01月22日  【字号: 收藏本文

内容摘要:Groovy,针对JVM的类Java动态语言,主要增强了对于Java 5特征的支持,包括注解、泛型和枚举,框架包括Spring,Hibernate,JPA,Goole Guice或者TestNG。

  除了因为支持Java 5的特性而给Groovy语言带来了一些增强外,Groovy1.5还引入了其他一些语法的增强,我们在下面的章节中会探索这些部分。

  增加的语法

  Elvis操作符

  Java 5的特性除了带给Groovy注解,泛型和枚举,还增加了一个新操作符—— ?:,Elivis操作符。当你看这个操作符的时候,你很容易猜测为什么会这样命名 —— 如果不是,可以根据Smiley来思考。这个新操作符实际上是一个三目操作符的便捷记法。你是否经常使用三目操作符来改变一个变量的值?如果它是null那么给它分配一个缺省值。在Java中典型的情况是这样的:

String name = "Guillaume";
String displayName = name != null ? name : "Unknown";

  在Groovy中,由于语言本身可以按需“强制”类型转换到布尔值(例如在if或者while构造中条件表达式需要为布尔值),在这个语句中,我们可以忽略和null的比较,因为当一个String是null的时候,它被强制转换为false,所以在Groovy中语句会变为:

String name = "Guillaume"
String displayName = name ? name : "Unknown"

  然而,你仍然会注意到name变量的重复,这破坏了DRY原则(不要重复你自己 Don't Repeat Yourself)。由于这个构造非常普遍,所以引入了Elvis操作符来简化这些重复的现象,语句变成:

String name = "Guillaume"
String displayName = name ?: "Unknown"

  name变量的第二次出现被简单的忽略了,三目操作符不再是三目的了,缩短为这种更简明的形式。

  还有一点值得注意的是这个新的构造没有副作用,由于第一个元素(这里是name)不会象在三目操作符中那样被估值两次,所以不需要引入一个中间的临时变量来保持三目操作符中第一个元素的第一次估值。

来源:InfoQ中文站    作者:曹云飞    责编:豆豆技术应用

正在加载评论...