Groovy 是一种基于Java 平台的面向对象语言。 Groovy 1.0 于 2007 年 1 月 2 日发布,其中 Groovy 2.4 是当前的主要版本。 Groovy 通过 Apache License v 2.0 发布。
Groovy 官网:https://groovy-lang.org/
阿里云镜像下载:https://mirrors.aliyun.com/apache/groovy/
Groovy 基本语法
官方文档:http://www.groovy-lang.org/syntax.html
在一个 groovy 文件中可以定义类和脚本。
变量、方法建议使用 def 定义,而不使用具体的数据类型定义。
groovy 的注释方式和 Java 一样,有单行和多行俩种。
语句末尾的分号可以省略,groovy 是以换行作为一行代码的结束。
默认类、方法、字段都是 public 修饰。
对象属性的操作:
- 读取:
- 对象.属性名
- 对象的 getter 方法
- 对象[“属性名”]
- 赋值:
- 对象.属性名 = xxx
- 对象的 setter 方法
- 构造器
对类属性的操作本质是:通过属性对应的 getter 、setter 方法完成。
- 读取:
方法操作:
- 声明时:参数类型、返回值类型可以省略
- 调用时:() 可以省略
支持顺序结构、分支结构、循环结构、各种运算符(算术、关系、位、赋值、范围运算符)
基本类型也是对象,可以直接调用对象的方法
groovy 中的字符串有单引号、双引号、三引号:
- 单引号:作为字符串常量,没有运算能力
- 双引号:可以引用变量,使用
${}
占位,有运算能力 - 三引号:模板字符串,支持换行
数据类型:变量、属性、方法、闭包的参数及方法的返回值类型都是可有可无,都是在变量赋值的时候才决定其类型。
IDEA 创建 Groovy 项目
使用 idea 创建 Groovy 项目,主要需要指定本地安装的 groovy sdk:
创建 hello world 程序
groovy 类
在 src 目录下创建 Demo1.groovy 文件:
1 | class Demo1 { |
通过编译后的 class 文件可以看出,当前 Demo1 类实现了 GroovyObject 接口:
groovy 脚本
在 src 目录下创建 Demo2.groovy 文件:
1 | def website = 'woodwhlaes.cn' |
通过编译后的 class 文件可以看出,当前 Demo1 类继承了 Script:
groovy 闭包
闭包是一个短的匿名代码块。它通常跨越几行代码。一个方法甚至可以将代码块作为参数。它们是匿名的。
来一个简单的例子:
1 | class Demo3 { |
在上面的例子中,代码{ println "woodwhales.cn" }
被称为闭包。此标识符引用的代码块可以使用 call 语句执行。
当我们运行上面的程序,我们将得到以下结果:
1 | woodwhales.cn |
闭包中的形式参数
闭包也可以包含形式参数,以使它们更有用,就像Groovy中的方法一样。
1 | class Demo3 { |
在上面的代码示例中,注意使用${website}
,这导致 closure 接受一个参数。当通过 closure.call 语句调用闭包时,我们现在可以选择将一个参数传递给闭包。
当我们运行上面的程序,我们将得到以下结果:
1 | welcome woodwhales.cn |
闭包和变量
更正式地,闭包可以在定义闭包时引用变量。以下是如何实现这一点的示例。
1 | class Demo3 { |
在上面的例子中,除了向闭包传递参数之外,我们还定义了一个名为 str1 的变量。闭包也接受变量和参数。
当我们运行上面的程序,我们将得到以下结果:
1 | 欢迎访问 woodwhales.cn |
由于参数定义和获取是明确的,{}
花括号也可以省略:
1 | class Demo3 { |
在方法中使用闭包
闭包也可以用作方法的参数。在 Groovy 中,很多用于数据类型(例如列表和集合)的内置方法都有闭包作为参数类型。
1 | class Demo4 { |
输出结果:
1 | groovy 学习笔记 |