Groovy探索 "as"关键字的深入使用
在前面的系列《Groovy Tip 20 "as"关键字的用法》中,我们已经谈到了"as"关键字的一些激动人心的用法。本篇则要接着前篇的内容说下去,继续来展现"as"关键字的一些更为激动人心的用法。
在前一篇中,我们谈到了"as"关键字的一个用法是进行类型转换。最常用的是形如下面的用法:
def list = ['a','b','c']
println list.class
def strs = list as String[]
println strs.class
这就是一个常用的类型转换的代码,从下面的打印结果可以看出,"as"关键字的使用的确使得变量进行了类型转换。
class java.util.ArrayList
class [Ljava.lang.String;
看到了这个用法,我们可能会想,"as"关键字的这个用法是如何实现的?我们如何想把自己设计的两个类之间进行相互转换,该如何实现。
比如说我们有如下的两个类:
class A
{
def x
}
class B
{
def x
}
如果我们已经得到了一个A类的对象,如下:
def a = new A(x:3)
那么我们如何通过下面的语句获取到一个B类的对象呢?
def b = a as B
其实,很简单,我们只需要在A类里实现"asType"方法即可,如下所示:
class A
{
def x
Object asType(Class type)
{
if(type == B) return new B(x:this.x+1)
}
}
这是我们重写过的A类,那么我们现在就可以测试看看我们是否实现了上面所希望的功能:
def a = new A(x:3)
def b = a as B
println b.class.simpleName
println b.x
运行结果为:
B
4
可以看到,的确是实现了我们预想的功能。
除此之外,"as"关键字还有让我们惊奇的发现。比如,我们有如下的一个简单类:
class C
{
def x
def y
public C(x,y)
{
this.x = x
this.y = y
}
}
那么,我们可以这样实例化它的一个实例:
def list = [1,2]
def c = list as C
println c.class.simpleName
println "${c.x},${c.y}"
运行的结果为:
C
1,2
这真是如魔幻一样。
且慢惊叹,再跟着我们看看下面的例子,比如,我们定义了如下的一个接口:
interface D
{
def test_d()
}
我们就可以这样使用"as"关键字:
def map = [test_d:{println 'ok'}]
def d = map as D
println d.class.simpleName
d.test_d()
运行结果为:
$Proxy0
ok
真的是很酷吧!我们可以看到,"as"关键字是Groovy语言中是一个很重要的关键字,它的用法体现了Groovy语言作为一个动态语言的特点,一切都可以在运行期内在做决定,充分的展现了Groovy语言灵活、快捷的特点。
分享到:
相关推荐
Groovy 在 Spring 中的简单使用 Groovy 是一种敏捷的动态语言,用于 Java 虚拟机,可以与 Java 代码无缝集成。它的类 Java 语法对于 Java 开发人员来说很自然,且可以作为纯粹的脚本语言使用。在 Spring 中动态使用...
Groovy也支持使用`def`关键字来定义未指定类型的变量。 闭包是Groovy的一个核心特性,它类似于函数指针,可以被用作参数传递或者作为返回值。闭包在Groovy中的定义形式通常为`{参数列表 -> 代码块}`。闭包的this...
本文将深入探讨在Java项目中使用Groovy的三种主要方式,并阐述它们各自的优势和应用场景。 一、作为嵌入式脚本 Java 6引入了JSR 223(Scripting for the Java Platform),允许在Java程序中直接执行脚本语言。...
Groovy是一种基于Java平台的动态编程语言,它与Java语法高度兼容,但提供了更简洁、更灵活的写法,使得开发更加高效。...通过深入学习和实践,我们可以利用Groovy的优势提高生产力,解决实际问题。
1. **创建Groovy文件**:使用文本编辑器创建一个名为hello.groovy的文件,并输入以上代码。 2. **执行脚本**:打开命令行窗口,导航至包含hello.groovy文件的目录,然后输入`groovy hello`来运行脚本。 #### 四、...
本文将深入探讨如何使用Groovy脚本进行文件操作,包括文件的创建、读取、写入、删除等基本操作,以及更高级的操作,如文件过滤和搜索。通过实际的代码示例,我们将展示Groovy在文件操作中的优雅和力量。 Groovy提供...
### Eclipse 安装 Groovy 插件的详细步骤与使用指南 #### 一、Groovy 插件的安装 为了能够在 Eclipse 中使用 Groovy 进行开发,首先需要安装 Groovy 插件。以下是详细的安装步骤: 1. **下载 GroovyEclipse.zip ...
本文将深入探讨EditPlus 3.12 540版本的序列号(SN)问题以及与Groovy语言相关的语法文件,帮助用户更好地理解和利用这一强大的文本编辑器。 EditPlus是一款功能丰富的文本编辑器,尤其适合编程人员使用。它支持...
3. 加载并执行Groovy脚本:通过GroovyClassLoader的`parseClass()`方法解析Groovy源码,然后使用`newInstance()`方法创建脚本实例,最后通过`invokeMethod()`方法执行脚本中的方法。 在Java与MongoDB的交互中,我们...
通过阅读《Groovy in Action》中文版,你可以深入了解Groovy的这些特性,并学会如何在实际项目中有效地使用它,无论是编写脚本、构建工具还是开发大型应用程序,Groovy都能提供一种更高效、更灵活的方式。
这是一种跨语言交互的方式,特别是在混合使用Groovy和Java的项目中非常常见。 Groovy调用Java类相当直观。首先,你需要在Groovy脚本中使用`import`语句导入你想要使用的Java类。例如,如果要使用`java.util.Random`...
为了导入Groovy库,你可以使用`import`关键字,如 `import some.package.YourClass`,这样就可以在脚本中使用该类的功能。 对于`import groovy`,通常意味着你想要引入Groovy标准库或者其他第三方Groovy库。例如,...
在Marketplace的搜索框内,输入“Groovy”关键字,系统会列出所有与Groovy相关的插件。找到名为“Groovy-Eclipse”的插件,它是官方推荐的Groovy开发工具集。 如果没有在Marketplace中找到Groovy插件,或者由于网络...
在本文中,我们将深入探讨Groovy的基础知识,包括语法特性、面向对象编程、脚本使用以及与其他Java技术的集成,以帮助初学者快速入门。 1. **Groovy语法简介** - Groovy的语法简洁且易于理解,它融合了多种语言的...
Groovy允许省略变量的类型声明,使用`def`关键字即可。在`main`方法中,可以使用`println`打印"Hello World"。如果整个文件只有一句`println`语句,Groovy依然能正确执行。 Groovy的语法特点包括: 1. **类型推断**...
Groovy是一种基于Java平台的、动态的、开源的编程语言,它设计的目的是为了提高开发者的生产力,同时保持与Java的兼容性。...对于开发者来说,深入学习这个文档将极大地提升对Groovy的理解和使用能力。