groovy笔记

安装

  • 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()

基本语法

在这里插入图片描述
在这里插入图片描述

  • 变量定义
    1. 弱类型定义:def动态定义变量, 转换到object
    2. 强类型定义:基础类型和对象类型定义变量,转换到Java对应包装类
  • 字符串
    1. 单引号(单行):def name = ‘Hello’, 转换为Java String
    2. 双引号(可扩展任意表达式):def name=‘World’; def helloworld= “Hello ${name}”,转换为Groovy GStringImpl
    3. 三引号(可多行):def name = ‘’’ Hello
      World’’’,转换为Java String
    4. String与GStringImpl可以相互转换
    5. 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互相转换

在这里插入图片描述

普通文件操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

groovy与java的区别

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值