Groovy

基本概念

IDEA集成

可以安装 Groovy 的 Plugin 起到代码高亮以及类标注的辅助作用

在 Maven 中只需要引入一个依赖即可开始开发 Groovy 脚本程序

1
2
3
4
5
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>2.4.5</version>
</dependency>

令牌

在 Groovy 中令牌可以是一个关键字、标识符,常量、符号或者是字符串

1
println("Hello")

上述的语法中就包含了两个令牌,一个是 println 关键字,另一个则是 Hello 字符串

标识符

Groovy 中标识符的概念和 Java 中大致类似,要求:

以字母,美元或下划线开头,不能以数字开头

1
2
3
4
5
static void main(String[] args) {
def x = 5
def $x = 5
def _x = 5
}

常见语法

动态声明

在之前的例子中我们也可以看到

Groovy 的标识符声明除了类似于 Java 的静态声明方式之外,还有着不同于 Java 有点类似于 Python 等的动态声明方式,是通过 def 关键字来声明

动态声明的方式意味着编译器不会像静态声明方式那样在编译期就检查操作是否符合类型支持范围,而是会在运行时决定变量的类型,编译期变量的类型有可能会发生改变

常见关键字

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 pull package return
super switch this throw
throws trait true try
while

可以不加分号

不同于 java 的硬性要求, groovy 中开发者可以不加分号,仅仅以换行来分割每一行的内容

1
2
3
4
static void main(String[] args) {
def x = 5
println(x)
}

循环控制

  • for-in 遍历 List
  • for-in 遍历数值范围
  • for-in 遍历 Map

和 Java 大体类似,但是 Groovy 还更早支持了 for-in 这种遍历 List 的方式

1
2
3
4
5
6
static void main(String[] args) {
int [] arr = [1,2,3]
for (i in arr){ //甚至还包含了自动类型推断
println(i)
}
}

同时 for-in 也可以用于 1..5 这样的循环范围声明方式

1
2
3
4
5
static void main(String[] args) {
for (i in 1..5){
println(i)
}
}

甚至还天生支持 Map

1
2
3
4
5
6
static void main(String[] args) {
Map<String,Integer> map = ["A":1,"B":2,"C":3]
for (i in map){
println(i.key + " = " + i.value)
}
}

方法声明

  • Groovy 中的方法是通过返回值类型或者是 def 关键字来定义的
  • 传递参数的时候不需要显式声明类型,会自己推断
  • 默认参数需要放在参数列表的最后面指定

支持 def 声明或者是传统方式声明

1
2
3
4
5
6
7
static void main(String[] args) {
print(sum(1,"2"))
}

static def sum(a, b) {
return a + b
}

默认参数

如果没有值传递给参数的方法,则使用缺省值

如果同时出现使用非默认和默认参数,则必须注意,默认参数应在参数列表的末尾定义。

1
2
3
4
5
6
7
static void main(String[] args) {
print(sum(1))
}

static def sum(a, b = 6) {
return a + b
}

Groovy
http://example.com/2024/05/28/Groovy/
作者
Noctis64
发布于
2024年5月28日
许可协议