深入学习-Gradle-自动化构建技术(二)Groovy-筑基

本文深入探讨了Groovy在自动化构建中的应用,特别是在Gradle中的角色。文章从Groovy的bin和doc文件夹入手,详细讲解了Groovy的关键字、与Java的差异,包括getter/setter、语法规则、类型定义和操作符的使用。此外,还介绍了Groovy的基础语法,如变量、字符串、闭包以及数据结构,强调了闭包的调用和使用技巧。内容涵盖了Groovy面向对象特性,如元编程和数据结构操作。文章适合对Groovy感兴趣的开发者学习,帮助理解Groovy如何提升自动化构建效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Groovy 官方网址

从官网下载好 Groovy 文件之后,我们就可以看到 Groovy 的目录结构,其中我们需要 重点关注 bin 和 doc 这个两个文件夹

bin 文件夹

bin 文件夹的内容如下所示:

这里我们了解下三个重要的可执行命令文件,如下所示:

  • 1)、groovy 命令类似于 Java 中的 java 命令,用于执行 groovy Class 字节码文件。
  • 2)、groovyc 命令类似于 Java 中的 javac 命令,用于将 groovy 源文件编译成 groovy 字节码文件。
  • 3)、groovysh 命令是用来解释执行 groovy 脚本文件的。

doc 文件夹

doc 文件夹的下面有一个 html 文件,其中的内容如下所示:

这里的 api 和 documentation 是我们需要重点关注的,其作用分别如下所示:

  • api:groovy 中为我们提供的一系列 API 及其 说明文档。
  • documentation:groovy 官方为我们提供的一些教程。

5、Groovy 中的关键字

下面是 Groovy 中所有的关键字,命名时尤其需要注意,如下所示:

as、assert、break、case、catch、class、const、continue、def、default、
do、else、enum、extends、false、finally、for、goto、if、implements、
import、in、instanceof、interface、new、null、package、return、super、
switch、this、throw、throws、trait、true、try、while

6、Groovy && Java 差异学习

1)、getter / setter

对于每一个 field,Groovy 都会⾃动创建其与之对应的 getter 与 setter 方法,从外部可以直接调用它,并且 在使⽤ object.fieldA 来获取值或者使用 object.fieldA = value 来赋值的时候,实际上会自动转而调⽤ object.getFieldA() 和 object.setFieldA(value) 方法

如果我们不想调用这个特殊的 getter 方法时则可以使用 .@ 直接域访问操作符

2)、除了每行代码不用加分号外,Groovy 中函数调用的时候还可以不加括号。

需要注意的是,我们在使用的时候,如果当前这个函数是 Groovy API 或者 Gradle API 中比较常用的,比如 println,就可以不带括号。否则还是带括号。不然,Groovy 可能会把属性和函数调用混淆

3)、Groovy 语句可以不用分号结尾。
4)、函数定义时,参数的类型也可以不指定。
5)、Groovy 中函数的返回值也可以是无类型的,并且无返回类型的函数,其内部都是按返回 Object 类型来处理的。
6)、当前函数如果没有使用 return 关键字返回值,则会默认返回 null,但此时必须使用 def 关键字。
7)、在 Groovy 中,所有的 Class 类型,都可以省略 .class。
8)、在 Groovy 中,== 相当于 Java 的 equals,,如果需要比较两个对象是否是同一个,需要使用 .is()。
9)、Groovy 非运算符如下:

assert (!“android”) == false

10)、Groovy 支持 ** 次方运算符,代码如下所示:

assert 2 ** 3 == 8

11)、判断是否为真可以更简洁:

if (android) {}

12)、三元表达式可以更加简洁:

// 省略了name
def result = name ?: “Unknown”

13)、简洁的非空判断

println order?.customer?.address

14)、使用 assert 来设置断言,当断言的条件为 false 时,程序将会抛出异常。
15)、可以使用 Number 类去替代 float、double 等类型,省去考虑精度的麻烦。
16)、switch 方法可以同时支持更多的参数类型。

注意,swctch 可以匹配列表当中任一元素,示例代码如下所示:

// 输出 ok
def num = 5.21
switch (num) {
case [5.21, 4, “list”]:
return “ok”
break
default:
break
}

三、Groovy 基础语法

Groovy 的基础语法主要可以分为以下 四个部分:

  • 1)、Groovy 核心基础语法。
  • 2)、Groovy 闭包。
  • 3)、Groovy 数据结构。
  • 4)、Groovy 面向对象

1、Groovy 核心基础语法

Groovy 中的变量

变量类型

Groovy 中的类型同 Java 一样,也是分为如下 两种:

  • 1)、基本类型。
  • 2)、对象类型。

但是,其实 Groovy 中并没有基本类型,Groovy 作为动态语言, 在它的世界中,所有事物都是对象,就如 Python、Kotlin 一样:所有的基本类型都是属于对象类型。为了验证这个 Case,我们可以新建一个 groovy 文件,创建一个 int 类型的变量并输出它,结果如下图所示:

可以看到,上面的输出结果为 ‘class java.lang.Integer’,因此可以验证我们的想法是正确的。实际上,Groovy 的编译器会将所有的基本类型都包装成对象类型

变量定义

groovy 变量的定义与 Java 中的方式有比较大的差异,对于 groovy 来说,它有 两种定义方式,如下所示:

  • 1)、强类型定义方式:groovy 像 Java 一样,可以进行强类型的定义,比如上面直接定义的 int 类型的 x,这种方式就称为强类型定义方式,即在声明变量的时候定义它的类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值