正文
1.Groovy概述
Groovy是Apache 旗下的一种基于JVM的面向对象编程语言,既可以用于面向对象编程,也可以用作纯粹的脚本语言。在语言的设计上它吸纳了Python、Ruby 和 Smalltalk 语言的优秀特性,比如动态类型转换、闭包和元编程支持。
Groovy与 Java可以很好的互相调用并结合编程 ,比如在写 Groovy 的时候忘记了语法可以直接按Java的语法继续写,也可以在 Java 中调用 Groovy 脚本。比起Java,Groovy语法更加的灵活和简洁,可以用更少的代码来实现Java实现的同样功能。
2.Groovy编写和调试
Groovy的代码可以在Android Studio和IntelliJ IDEA等IDE中进行编写和调试,缺点是需要配置环境,这里推荐在文本中编写代码并结合命令行进行调试(文本推荐使用Sublime Text)。关于命令行请查看
Android Gradle(二)Gradle入门前奏
这篇文章。
具体的操作步骤就是:在一个目录中新建build.gradle文件,在build.gradle中新建一个task,在task中编写Groovy代码,用命令行进入这个build.gradle文件所在的目录,运行gradle task名称 等命令行对代码进行调试,本文中的例子都是这样编写和调试的。
3.变量
Groovy中用def关键字来定义变量,可以不指定变量的类型,默认访问修饰符是public。
def a = 1;
def int b = 1;
def c = "hello world";
复制代码
4.方法
方法使用返回类型或def关键字定义,方法可以接收任意数量的参数,这些参数可以不申明类型,如果不提供可见性修饰符,则该方法为public。
用def关键字定义方法。
task method <<{
add (1,2)
minus 1,2
}
def add(int a,int b) {
println a+b
}
def minus(a,b) {
println a-b
}
复制代码
如果指定了方法返回类型,可以不需要def关键字来定义方法。
task method <<{
def number=minus 1,2
println number
}
int minus(a,b) {
return a-b
}
复制代码
如果不使用return ,方法的返回值为最后一行代码的执行结果。
int minus(a,b) {
a-b
}
复制代码
从上面两段代码中可以发现Groovy中有很多省略的地方:
-
语句后面的分号可以省略。
-
方法的括号可以省略,比如注释1和注释3处。
-
参数类型可以省略,比如注释2处。
-
return可以省略掉,比如注释4处。
5.类
Groovy类非常类似于Java类。
task method <<{
def p = new Person()
p.increaseAge 5
println p.age
}
class Person {
String name
Integer age =10
def increaseAge(Integer years) {
this.age += years
}
}
复制代码
运行 gradle method打印结果为:
15
Groovy类与Java类有以下的区别:
-
默认类的修饰符为public。
-
没有可见性修饰符的字段会自动生成对应的setter和getter方法。
-
类不需要与它的源文件有相同的名称,但还是建议采用相同的名称。
6.语句
6.1 断言
Groovy断言和Java断言不同,它一直处于开启状态,是进行单元测试的首选方式。
task method <<{
assert 1+2 == 6
}
复制代码
输出结果为:
Execution failed for task ':method'.
> assert 1+2 == 6
| |
3 false
复制代码
当断言的条件为false时,程序会抛出异常,不再执行下面的代码,从输出可以很清晰的看到发生错误的地方。