Groovy Tip 20 “as”关键字的用法
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
在Groovy语言中,“as”关键字是非常重要的,它同样是体现Groovy语言作为敏捷式语言的一个重要方面。
“as”关键字在Groovy语言中最为常用的用法是进行强制类型转换,这相对于Java语言来说,就显得编码起来比较容易,请看下面的例子。
List list = new ArrayList();
list.add("1");
list.add("2");
ArrayList list1 = (ArrayList)list;
可以看到,在Java语言中,进行强制类型转换使用的是括号加上要转换的类型,如上面的“(ArrayList)”,而在Groovy语言中则是如下的样子:
List list = ['a','b']
ArrayList list1 = list as ArrayList
println list1
可以看到,在Groovy语言中,进行强制类型转换使用的是“as”加上要转换的类型,如上例中的“as ArrayList”。因为括号的输入是先要按下“Shift”键,然后在按下括号键,没有直接键入“as”方便。所以Groovy语言的强制类型转换要比Java语言来得快捷。
当然,Groovy语言的强制类型转换并不一定非要“as”关键字不可,比如上面的代码完全可以写成下面的样子:
List list = ['a','b']
ArrayList list1 = list
println list1
这就更加的简单了,充分的体现了Groovy语言的简单易用的特点。
这还不是它的最简单之处,Groovy语言的强制类型转换比之Java语言更为简单之处体现在数组与List之间的转换。请先看Java的例子:
List list = new ArrayList();
list.add("1");
list.add("2");
String[] strs = (String[])list.toArray(new String[0]);
System.out.println(strs[0]);
可以看到,Java语言在数组和List之间的转换是相当麻烦的。而我们的Groovy语言就显得简单多了:
List strs = ['a','b']
String[] strs1 = strs as String[]
println strs1
当然了,你也完全可以把“as”关键字去掉,如下:
List strs = ['a','b']
String[] strs1 = strs
println strs1
Java语言在数组和List之间的转换的麻烦之处还在于,如果从数组转换为List,则又是另外的一个方法,如下:
String[] strs = new String[]{"1","2"};
List list = Arrays.asList(strs);
System.out.println(list.get(0));
而Groovy语言中则统统直接使用关键字“as”,如下:
String[] strs = ['a','b']
List list = strs as List
println list
当然,你也可以把关键字“as”去掉,如下:
String[] strs = ['a','b']
List list = strs
println list
上面关于关键字“as”的用法已经是够激动人心的了,但Groovy语言还没有完,它还赋予“as”关键字另外一个激动人心的用法。那就是类似于sql语言中的“同义词”的“as”用法,请看下面的例子:
import groovy.xml.MarkupBuilder
class Person
{
String name
String age
String addr
}
class Testor {
static void main(args) {
def out = new StringWriter()
def xml = new MarkupBuilder(out)
def list = [new Person(name:'Tom',age:'33',addr:'Shenzhen'),
new Person(name:'Alice',age:'22',addr:'Taibei')]
xml.persons{
for(p in list){
person{
for(prop in p.properties)
{
if(prop.key!='metaClass'&&prop.key!='class')
{
"$prop.key" prop.value
}
}
}
}
}
println out.toString()
}
}
代码有点长,其实完全可以不用把全部的代码拷出来,但为了读者能够直接运行我们的例子,就全部拷了出来。现在我们只关心下面这句:
def xml = new MarkupBuilder(out)
这是一个简单的初始化一个对象的语言,平淡无奇。但麻烦的是,我们在输入类名“MarkupBuilder”的时候,由于我们是引用的类,可以说我们对这个类不是很熟悉,所以输入这个类名就相当的麻烦,“MarkupBuilder”还算是比较短的,在编码的过程中,我们会遇到很多类名很长的类,这样输入起来就更加的麻烦。
Groovy语言为我们提供了“as”关键字来简化上面提出的问题,比如上面的例子就可以写成下面的样子:
import groovy.xml.MarkupBuilder as MB
class Person
{
String name
String age
String addr
}
class Testor {
static void main(args) {
def out = new StringWriter()
def xml = new MB(out)
def list = [new Person(name:'Tom',age:'33',addr:'Shenzhen'),
new Person(name:'Alice',age:'22',addr:'Taibei')]
xml.persons{
</s
分享到:
相关推荐
Groovy Tip 21 魔幻数组
本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
This book covers Groovy fundamentals, such as installing Groovy, using Groovy tools, and working with the Groovy Development Kit (GDK). You’ll also learn more advanced aspects of Groovy, such as ...
This book covers Groovy fundamentals, such as installing Groovy, using Groovy tools, and working with the Groovy Development Kit (GDK). You'll also learn more advanced aspects of Groovy, such as ...
赠送jar包:groovy-3.0.9.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
Chapter 10 Groovy as a static language Part 2 Around the Groovy library Chapter 11 Working with builders Chapter 12 Working with the GDK Chapter 13 Database programming with Groovy Chapter 14 Working...
Groovy 调用 Java 类groovy 调用 Java class 十分方便,只需要在类前导入该 Java 类,在 Groovy 代码中就可以无缝使用该
apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望...
概述主要介绍Java、spring与groovy结合使用,高清英文版本
Groovy语言。 里面详细介绍了一些很有意思的方法。
groovy入门经典,groovyeclipse 插件
Making Java Groovy is a practical handbook for developers who want to blend Groovy into their day to day work with Java It starts by introducing the key differences between Java and Groovy and how you...
赠送jar包:groovy-all-2.4.13.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
Java调用Groovy,实时动态加载数据库groovy脚本,java读取mongoDB的groovy脚本,加载实时运行,热部署
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
Groovy轻松入门—搭建Groovy开发环境 Groovy轻松入门—搭建Groovy开发环境
赠送jar包:groovy-2.5.1.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
最近的groovy-all-2.4.12.jar包供使用,解决as编译时报错问题
groovy-2.3.6-installer windows安装版本
Groovy