`
JohnnyJian
  • 浏览: 106069 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Groovy学习笔记——as操作符

阅读更多

在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
1
0
分享到:
评论
1 楼 agile_boy 2008-02-01  
呵呵,用Groovy实现Java的interface还是很方便的。

相关推荐

    Groovy学习笔记 PDF版

    在《Groovy学习笔记》这本书中,你可能会学到如何快速入门Groovy,理解其基本语法,包括变量、控制流、类和对象的创建,以及如何利用Groovy的特性来提高开发效率。此外,书中可能还会涵盖Groovy在实际项目中的应用,...

    Java JDK 6学习笔记——ppt简体版.rar

    这份"Java JDK 6学习笔记——ppt简体版"提供了关于这个关键版本的详细教程,适合初学者和有一定经验的开发者来深入理解Java编程。 首先,我们要了解Java JDK是什么。Java Development Kit,简称JDK,是Oracle公司...

    Java JDK 6学习笔记——ppt简体版附课本代码

    这份“Java JDK 6学习笔记——ppt简体版”涵盖了Java语言的核心概念、语法特性以及JDK 6的新功能,旨在帮助初学者和有经验的开发者深入理解并掌握这一版本的Java开发环境。 首先,Java JDK 6的安装与配置是学习的...

    Groovy 学习笔记

    5. **运算符重载和方法默认参数**: Groovy允许操作符重载和方法定义默认参数,增强了代码的可读性和灵活性。 **二、Groovy与Java的交互** 1. **类和接口**: Groovy可以创建Java兼容的类和接口,因此可以直接与Java...

    Groovy轻松入门——Grails实战基础篇

    ### Groovy轻松入门——Grails实战基础篇 #### 搭建Grails环境及创建Grails Demo程序 **Groovy**是一种面向对象的编程语言,它运行于Java平台上,能够与Java代码无缝集成。而**Grails**则是一款基于Groovy的高性能...

    Groovy学习笔记.pdf

    Groovy是一种动态、灵活的编程语言,它是Java平台上的一个主要补充,特别是在脚本编写和快速原型设计方面表现突出。...这份"Groovy学习笔记.pdf"应该会提供一个良好的起点,帮助你踏上Groovy的学习之旅。

    Java JDK 6学习笔记——ppt简体版

    本篇学习笔记将围绕Java JDK 6的关键特性、语法改进、API更新以及开发实践进行详细讲解。 1. **Java JDK 6概述** - JDK(Java Development Kit)是Java开发的核心组件,包含了Java运行环境(JRE)、编译器(javac...

    Groovy学习笔记

    ### Groovy学习笔记知识点梳理 #### 一、Groovy简介 - **概念**:Groovy是一种灵活的脚本语言,其设计初衷是为了更好地服务于Java开发者。它具备许多现代动态语言的特点,比如Python和Ruby,同时又能够无缝地与Java...

    groovy学习笔记

    以下是对Groovy学习笔记各章节的详细解释: ### 第1章:数字和字符串 在Groovy中,所有的数字都是Object类型的,这意味着你可以在对象上调用方法。例如,你可以直接在数字上使用加减乘除等运算符,如`12 + 8`。...

    Groovy学习笔记 Struts2集成--Groovy类作为Action

    通过阅读文章《Groovy学习笔记 Struts2集成--Groovy类作为Action》,你可以更深入地了解如何在实际项目中利用Groovy的特性来优化Struts2应用。提供的压缩包文件`struts2-groovy-plugin`可能包含了Struts2 Groovy插件...

    Groovy need not rails——介绍自己写的一个基于groovy的框架,Webx

    通过深入学习和使用Webx,开发者可以充分利用Groovy的灵活性和生产力优势,同时享受到类似Rails的开发体验,而不必受限于Ruby语言。由于与Java平台的紧密集成,Webx还能够利用丰富的Java生态系统,为大型企业级应用...

    Groovy 学习资料

    本学习资料将带你深入了解Groovy的魅力,并逐步掌握其核心概念与实践技巧。 1. **Groovy简介** Groovy是由James Strachan于2003年创建的,它的设计目标是简化Java的语法,提高开发效率。Groovy可以直接调用Java的...

    Groovy语法&Gradle配置学习笔记

    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脚本Java整合...

    groovy 学习gradle学习经典手册

    《Groovy学习与Gradle实践经典手册》是一本深度探讨Groovy编程语言和Gradle构建工具的指南,专为Android及Java开发人员提供全面的知识覆盖。本书旨在帮助开发者提升在项目管理和自动化构建方面的技能,使其能够高效...

    Java JDK 7学习笔记 PDF

    7. **动态语言支持**:JDK 7引入了 invokedynamic 指令,这是Java虚拟机的四大基础操作之一,用于支持动态类型语言的实现,如Groovy和JRuby。 8. **异常链**:JDK 7允许在捕获异常时保留原始异常信息,形成异常链,...

    Groovy Language Documentation Version 2.5.5

    - 其他操作符,包括展开操作符(Spread operator)、范围操作符(Range operator)、子脚本操作符(Subscript operator)、成员资格操作符(Membership operator)、身份操作符(Identity operator)、强制转换操作...

    Groovy学习资料

    这份"Groovy学习资料"包含了深入理解和实践Groovy所需的关键知识点,帮助开发者从零基础到能够开发实际项目并成功上线。 首先,Groovy的基础语法是学习的重点。Groovy支持与Java相似的类、接口和继承结构,但其语法...

Global site tag (gtag.js) - Google Analytics