groovy 入门

为了更好地使用gradle,我觉得有必要先来入门一下groovy。

什么是groovy

groovy是一门面向对象敏捷开发语言,和java一样也是运行在jvm上的。所以groovy支持所有java语法,在此基础上也有一些自己的特性。他可以单独作为脚本语言来使用也可以像java一样使用。

我理解,他作为gradle的脚本语言也就是因为他可以作为脚本语言来构建项目。这点很灵活。

 

新建groovy项目

我们这里使用idea新建一个groovy项目。

next,填写项目名。新建完成。

打开一个groovy console。

我们再这里开始编写我们的测试代码。

 

groovy特性

 

兼容java语法

public class Test{

    private int num1;
    private int num2;

    Test(int num1, int num2) {
        this.num1 = num1
        this.num2 = num2
    }

    int getNum1() {
        return num1
    }

    void setNum1(int num1) {
        this.num1 = num1
    }

    int getNum2() {
        return num2
    }

    void setNum2(int num2) {
        this.num2 = num2
    }
}

Test t = new Test(1, 1);
System.out.println(t.getNum1());

这是一个典型的javaBean,两个属性以及getter/setter方法,还有他的构造器。

下面声明了一个变量,并且打印了一下这个变量的值。结果为1.

所以groovy是支持java语法的。

 

方法可以省略括号

def version = 1.0

println(version)
println version

这两种方法是一样的,都是打印这个字符串。

 

三种字符串写法

在groovy中有3中引号,单引号,双引号,三引号。

单引号,和在java中定义string是一样的。 

双引号,可以动态的拼接字符串。

三引号,定义的字符串可以实现换行。

举栗

def version = 1.0
def s1 = 'my name is wm'
def s2 = "my project version is ${version}"
def s3 = '''my
name
is
wm
'''

println s1
println s2
println s3

 

省略末尾分号

属性自动添加getter、setter方法

类,方法,属性默认都是public

可以省略return,默认方法最后一个表达式的值作为返回值

 

这几个可以放在一起说,我们将上面的代码改造一下

class Test{
    int num1
    int num2

    Test(int num1, int num2) {
        this.num1 = num1
        this.num2 = num2
    }

    int query(){
        num2
    }
}

Test t = new Test(1, 2)
println '调用get方法:'+t.getNum1()
println '直接打印属性:'+t.num1
println '调用query方法:' + t.query()


运行成功,所以在groovy里,末尾的分号有没有都没有影响,但是如果多个参数在同一行。那么就要用分号隔开了。

并且即使我们没有getter setter方法,我们也可以调用。

而且我们属性的访问权限也是public,可以直接调用。

在我们写的query方法中,直接返回num2,并且省略了return语句。

 

==和equal作用一致

在java中,如果为引用类型,那么==对比的是他们变量的堆内存地址,equal对比的是他们引用是否一致。

在groovy中,统一了这两个方法。

 

弱类型def

和javascript中的var一样,在groovy中使用def可以定义变量,他会在运行时动态的去推导变量类型。

def version = 1.0
def version2 = '现在版本1.0'

println version
println version.getClass()
println version2
println version2.getClass()

 

assert断言

def version = 1.0
assert version == 1.0
assert version == 2

当为false时会报错。

 

集合API

list

在java中定义一个集合,是使用{},但在groovy中把这个符号给了闭包。后面会说。

所以定义集合和定义数组是一样的,使用[]。

List list = ['aa','bb','cc']
list << 'def'
println list

map

Map map = ['java':1.8,'py':3]
map.maven = 3.5
println map

闭包

我理解,groovy中把java的lambda变了一下,起了一个新的名字叫闭包。

首先闭包通过{}来定义的。下面举个例子

def b1 = {
    println 'hello'
}

def b2 = {
    a -> println a
}



def method1(Closure c){
    c()
}

def method2(Closure c){
    c('world')
}

method1(b1)
method2(b2)

b1 b2 就是我们定义的闭包。

我们又定义了2个方法,method1和method2.他们分别传入一个闭包(Colsure)。

在方法内调用闭包。

最后我们执行以下method1和method2.

结果

大概内容就这些吧。知道这些应该可以基本看懂build.gradle的构建脚本了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值