在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世界最耀眼的技术之一--Grails相信大家早已耳闻,我将通过Grails实战系列文章 向您展现Grails的迷人风采,使您感受到Grails的魅力,以至疯狂地爱上Grails,并坠入...
Groovy学习笔记,内容如下: 1.概念 2.基本语法 3.字符串 4.集合 5.类和闭包 6.控制语句 7.操作符重载 8.I/O操作 9.高级应用 10.正则表达式
对Groovy开发环境设置,基本语法做了简单明了的介绍
图文并茂,适合入门新手,涵盖了基本的语法讲解及一些DEMO测试,值得一看
NULL 博文链接:https://rsljdkt.iteye.com/blog/859059
第1章 数字和字符串 第2章 List的简单介绍 第3章 String的特殊用法 第4章 闭包 第5章 集合+闭包 第6章 Map和Range 第7章 函数
Groovy_笔记
Groovy语法&Gradle配置学习笔记
NULL 博文链接:https://key232323.iteye.com/blog/1336400
Grails Groovy 学习必备参考资料
很好的学习Groovy的学习资料, 很实用。。 个人感觉Groovy是Java敏捷开发的首选。
Groovy学习资料-中文.rar。Groovy学习资料。Grails学习资料。mht网页格式。
适合想了解groovy 编程开发的人员 Groovy - hellworld Groovy - 变量 Groovy - 静态import Groovy - 字符串 Groovy - 分支结构语句 Groovy - 循环结构语句
groovy学习大礼包,包括groovy用户指南,groovy解惑,Groovy轻松入门
网络红文 实战gradle,android,java开发人员的必修课
Groovy in action 中英文,API
groovy环境的mock工具,用于辅助单元测试.