Groovy 1.5的新特性

http://tech.ddvip.com   2008年01月22日    社区交流

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

enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}

  一旦你定义了你的枚举,你可以在Java中以通常的记法Day.MONDAY来使用它,还可以使用枚举来润色你的switch/case语句:

def today = Day.SATURDAY
switch (today) {
// Saturday or Sunday
case [Day.SATURDAY, Day.SUNDAY]:
println "Weekends are cool"
break
// a day between Monday and Friday
case Day.MONDAY..Day.FRIDAY:
println "Boring work day"
break
default:
println "Are you sure this is a valid day?"
}

  请注意Groovy的switch语句比类似C风格语言的switch语句要强大一些,在Groovy中可以在switch和case语句使用任何类型的对象。不用为每一个枚举值罗列七个不同的case语句块,你可以在列表或者ranges(Groovy集合类的一种类型)中重新分组case语句:当值出现在列表或者range中,case将为真而且会执行它关联的命令。

  受到Java教程的启示,这里是一个更复杂的关于天文学的例子,向你展示了在枚举中如何包含属性,构造器和方法:

enum Planet {
MERCURY (3.303e+23, 2.4397e6),
VENUS  (4.869e+24, 6.0518e6),
EARTH  (5.976e+24, 6.37814e6),
MARS  (6.421e+23, 3.3972e6),
JUPITER (1.9e+27,  7.1492e7),
SATURN (5.688e+26, 6.0268e7),
URANUS (8.686e+25, 2.5559e7),
NEPTUNE (1.024e+26, 2.4746e7)
double mass
double radius
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
void printMe() {
println "${name()} has a mass of ${mass} " +
"and a radius of ${radius}"
}
}
Planet.EARTH.printMe()

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

正在加载评论...