文章目录
安装
- Step1:配置JDK
Groovy是依赖于Java的,所以首先要配置好JDK。 - Step2:下载Groovy
下载后直接解压安装。 - Step3:配置Groovy环境变量
GROOVY_HOME = C:\workenv\Java\groovy\groovy-2.5.8
PATH = %GROOVY_HOME%\bin
- Step4:测试
groovy -v
介绍
与Java比较
//分号可以省略,权限符号可以省略
class Student {
private String name //带权限, setter/getter可以省略,通过点访问
private String email
int age //不带权限,setter/getter自动生成,可以通过点或者setter/getter访问
}
Student student = new Student(name:'yanggle',email: 'yanggle@xxx.com',age:40)
// 带权限,访问只能用点
println student.name
// 不带权限,访问用点或者setter/getter方法
println student.age
println student.getAge()
基本语法
- 变量定义
- 弱类型定义:def动态定义变量, 转换到object
- 强类型定义:基础类型和对象类型定义变量,转换到Java对应包装类
- 字符串
- 单引号(单行):def name = ‘Hello’, 转换为Java String
- 双引号(可扩展任意表达式):def name=‘World’; def helloworld= “Hello ${name}”,转换为Groovy GStringImpl
- 三引号(可多行):def name = ‘’’ Hello
World’’’,转换为Java String - String与GStringImpl可以相互转换
- String方法
逻辑控制
- swith…case
- for
for(i in 0..9){...} //range for(i in [0,1,2]){...} //list for(i in ['a':1, 'b':2]){key=i.key; value=i.value} //map
闭包
基础讲解
- 闭包概念
闭包就是一段代码块 - 闭包定义与调用
//无参闭包 def clouser = {println "Hello World"} //定义 clouser.call() //调用方式一(推荐,避免与函数调用的混淆) clouser() //调用方式二 //无参闭包(隐式参数it) def clouser = {println "Hello ${it}"} clouser('Hello') //带参闭包(无隐式参数it) def clouser = {String name, int age -> println "Hello ${name}, ${age}"} clouser('Hello', 18) //闭包返回值(一定有返回值,无return语句则返回null) def clouser = {String name -> return "Hello ${name}"} def result = clouser('Hello')
闭包的使用
闭包的使用就是将闭包作为函数参数传递给函数,然后被调用。
闭包的进阶
下面的this,owner,delegate输出都相同
- this 代表闭包定义处的类
- owner 代表闭包定义处的类或者对象
- delegate 代表任意对象,多数时候=owner
闭包的委托策略
多用于框架编程,日常代码很少用
数据结构
- 列表
Java:ArrayList,可以as成其他的类型,或者采用强类型定义
- 映射
Java: LinkedHashMap,可以as成其他的类型,或者采用强类型定义
- 范围
Java: List的子类
面向对象
类与接口
- 类
构造方法默认提供
- 接口
- trait
元编程
什么是元编程,运行时期执行的代码
-
invokeMethod & methodMissing
-
metaClass
可以通过metaClass对第三方类进行扩展,包括final的类,特别在框架开发场景中特别有用,类似Java的反射。
注意
普通的metaClass的注入属性和方法不是永久有效,只能是本Class调用有效,其他模块不能使用,如何能永久有效呢?使用如下开关即可:
ExpandoMetaClass.enableGlobally()
文件操作
JSON
XML
- 解析
- 构建
JSON & XML互相转换
普通文件操作