在Groovy中,as操作符有两种用途:定义导入别名和类型转换。
1. 定义导入别名
只要在import一个类或方法的时候使用as操作符,就可以对其进行重命名:
import java.lang.Math as M // 定义类的别名
assert M.log10(100) == 2
import static M.log10 as log // 定义方法的别名
assert log(1000) == 3
2. 类型转换
语法为“变量 as 类型”,在执行这个操作时,将调用左操作数的类的asType方法:
class A {
def val
def asType(Class t) {
assert t == Integer
val
}
}
def a = new A(val:123)
assert a as int == 123 // 这里调用了A#asType方法
也可以使用as操作符把一个map转换成一个bean:
a = [val:321] as A // 与new A(val:321)功能相同
assert a.val == 321
把一个list用as操作符转换成其他类型时,将使用该类型的合适的构造函数:
class B {
def a
def b
B(a, b) {
this.a = a
this.b = b
}
}
def b = [1, 2] as B // 这里调用了B(a, b)构造函数
assert b.a == 1 && b.b == 2
可以把一个闭包转换成interface,如果该interface中有多个方法,则这些方法都会调用该闭包:
interface X {
def f()
def g()
def h(a)
}
def x = { 100 } as X
assert x.f() == 100
assert x.g() == 100
assert x.h(10) == 100 // 即使带了一个参数,但是还是调用该闭包
def y = { t -> t } as X
assert y.f() == null // 缺少参数时,用null补足
assert y.g() == null
assert y.h(10) == 10
也可以把一个闭包的map转换成interface:
def z = [f:{ 1 }, g:{ 2 }, h:{ it * 3 }] as X
assert z.f() == 1
assert z.g() == 2
assert z.h(3) == 9
分享到:
相关推荐
在《Groovy学习笔记》这本书中,你可能会学到如何快速入门Groovy,理解其基本语法,包括变量、控制流、类和对象的创建,以及如何利用Groovy的特性来提高开发效率。此外,书中可能还会涵盖Groovy在实际项目中的应用,...
这份"Java JDK 6学习笔记——ppt简体版"提供了关于这个关键版本的详细教程,适合初学者和有一定经验的开发者来深入理解Java编程。 首先,我们要了解Java JDK是什么。Java Development Kit,简称JDK,是Oracle公司...
这份“Java JDK 6学习笔记——ppt简体版”涵盖了Java语言的核心概念、语法特性以及JDK 6的新功能,旨在帮助初学者和有经验的开发者深入理解并掌握这一版本的Java开发环境。 首先,Java JDK 6的安装与配置是学习的...
5. **运算符重载和方法默认参数**: Groovy允许操作符重载和方法定义默认参数,增强了代码的可读性和灵活性。 **二、Groovy与Java的交互** 1. **类和接口**: Groovy可以创建Java兼容的类和接口,因此可以直接与Java...
### Groovy轻松入门——Grails实战基础篇 #### 搭建Grails环境及创建Grails Demo程序 **Groovy**是一种面向对象的编程语言,它运行于Java平台上,能够与Java代码无缝集成。而**Grails**则是一款基于Groovy的高性能...
Groovy是一种动态、灵活的编程语言,它是Java平台上的一个主要补充,特别是在脚本编写和快速原型设计方面表现突出。...这份"Groovy学习笔记.pdf"应该会提供一个良好的起点,帮助你踏上Groovy的学习之旅。
本篇学习笔记将围绕Java JDK 6的关键特性、语法改进、API更新以及开发实践进行详细讲解。 1. **Java JDK 6概述** - JDK(Java Development Kit)是Java开发的核心组件,包含了Java运行环境(JRE)、编译器(javac...
### Groovy学习笔记知识点梳理 #### 一、Groovy简介 - **概念**:Groovy是一种灵活的脚本语言,其设计初衷是为了更好地服务于Java开发者。它具备许多现代动态语言的特点,比如Python和Ruby,同时又能够无缝地与Java...
以下是对Groovy学习笔记各章节的详细解释: ### 第1章:数字和字符串 在Groovy中,所有的数字都是Object类型的,这意味着你可以在对象上调用方法。例如,你可以直接在数字上使用加减乘除等运算符,如`12 + 8`。...
通过阅读文章《Groovy学习笔记 Struts2集成--Groovy类作为Action》,你可以更深入地了解如何在实际项目中利用Groovy的特性来优化Struts2应用。提供的压缩包文件`struts2-groovy-plugin`可能包含了Struts2 Groovy插件...
通过深入学习和使用Webx,开发者可以充分利用Groovy的灵活性和生产力优势,同时享受到类似Rails的开发体验,而不必受限于Ruby语言。由于与Java平台的紧密集成,Webx还能够利用丰富的Java生态系统,为大型企业级应用...
本学习资料将带你深入了解Groovy的魅力,并逐步掌握其核心概念与实践技巧。 1. **Groovy简介** Groovy是由James Strachan于2003年创建的,它的设计目标是简化Java的语法,提高开发效率。Groovy可以直接调用Java的...
5. **操作符重载**:Groovy允许自定义操作符,如`+`、`-`等,以实现自定义的逻辑。 6. **元编程**:Groovy具有强大的元编程能力,可以在运行时修改类或对象的行为,实现动态扩展。 Gradle的特点和关键概念包括: ...
Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合...
《Groovy学习与Gradle实践经典手册》是一本深度探讨Groovy编程语言和Gradle构建工具的指南,专为Android及Java开发人员提供全面的知识覆盖。本书旨在帮助开发者提升在项目管理和自动化构建方面的技能,使其能够高效...
7. **动态语言支持**:JDK 7引入了 invokedynamic 指令,这是Java虚拟机的四大基础操作之一,用于支持动态类型语言的实现,如Groovy和JRuby。 8. **异常链**:JDK 7允许在捕获异常时保留原始异常信息,形成异常链,...
- 其他操作符,包括展开操作符(Spread operator)、范围操作符(Range operator)、子脚本操作符(Subscript operator)、成员资格操作符(Membership operator)、身份操作符(Identity operator)、强制转换操作...
这份"Groovy学习资料"包含了深入理解和实践Groovy所需的关键知识点,帮助开发者从零基础到能够开发实际项目并成功上线。 首先,Groovy的基础语法是学习的重点。Groovy支持与Java相似的类、接口和继承结构,但其语法...