Groovy 打印列表:容器迭代和简单的属性访问方式

java.util.List和java.util.Map大概是java中使用得最广泛的两个接口,但是几乎没有直接支持的语言,groovy增加了通过语法来申明list和map的能力,groovy也增加了许多别的方法到collection类上。

同样的,javaBean的属性访问机制也无处不在,但是java没有没有很好的利用他们,groovy简化属性访问,同时充分考虑到了代码的可读性。

下面的例子用这两个特性打印类列表中的每一个类的包名称,注意package需要用引号包括起来,因为它在java中是一个关键字,但是它仍旧能被用作属性名称,尽管java允许像第一行那样声明一个数组,但是我们在这里作为一个真正的list使用——不需要额外的工作就可以增加和删除list中的对象:def classes = [String, List, File] for (clazz in classes) { println clazz.'package'.name }在groovy中,你甚至能避免通过for循环来来访问list中每个对象的属性——这样得到的结果是list中每个对象的属性值的一个列表。

使用这个特性,上面代码的等价解决代码为: println( [String, List, File].'package'.name )在控制台输出的结果为: ["java.lang", "java.util", "java.io"]非常酷!!