Groovy是一种基于Java虚拟机的动态语言,也是一种面向对象编程语言。该语言特别适合于Spring的动态语言一起使用。在使用Groovy编程时,Java有的Groovy几乎都有。Groovy类就是Java类,Java语义都保留下来了。
动态语言和静态语言的区别是什么?
静态语言在编译时进行类型检查,变量的类型在编译时确定,并且类型信息通常是静态的,不会在运行时改变。编译器可以根据类型信息进行一些优化,并在编译时发现一些潜在的错误。常见的静态语言有Java、C、C++等。
动态语言在运行时进行类型检查,变量的类型在运行时确定,并且类型信息通常是动态的,可以在运行时改变。动态语言相对灵活,允许在运行时进行类型转换和修改变量的类型。常见的动态语言有Python、JavaScript、Ruby等。
1.Gradle和Groovy的关系
- 首先,Gradle是一种构建工具,它使用了Groovy作为其构建脚本的编程语言。Gradle构建脚本使用Groovy语言编写,这意味着可以在Gradle构建脚本中直接使用Groovy语法和特性。
- 其次,Gradle利用了Groovy的动态语言特性来定义和配置项目的构建逻辑。通过使用Groovy的领域特定语言(DSL),Gradle提供了一种简洁而强大的方式来描述和自定义构建过程,使得构建脚本更加易于编写、理解和维护。
- 此外,Gradle还充分利用了Groovy的元编程能力,使得用户可以在构建过程中动态地修改和扩展构建逻辑。通过使用Groovy的元编程能力,可以实现一些高级的构建自定义和插件开发,进一步增强了Gradle的灵活性和可扩展性。
2.groovy简介
- groovy是一种java脚本,运行在JVM上。既可以面向对象编程,又可以作为脚本。
- groovy和java的区别是:完成同样的任务所需要的groovy代码比java代码少。
3.groovy的特点
- 提供动态类型转换、闭包和元编程
- 支持函数式编程,不需要main函数
- 默认导入常用的包
- 类不支持default作用域,默认作用域为public
- groovy基本类型是对象,可以直接调用对象中的方法
- 支持DSL(Domain Specific Language 领域特定语言)
- 基于java语言,兼容java语法
4.groovy基本语法
- 完全兼容java语法,也可以作为脚本型语言
- 在一个groovy文件中可以混合类的定义和脚本定义,此时不要再定义一个和文件同名的类
- 使用def定义变量、方法,不建议使用具体的数据类型
- 单行注释用//,多行注释用/**/
- 语句末尾分号可以省略
- 默认类、方法、字段都是public的
- 对象属性赋值
- 对象.属性名 = xxx
- 对象.setter方法(groovy可以为属性自动生成getter、setter方法)
- 具名构造器
- 对象属性读取
- 对象.属性名
- 对象["属性名"]
- 对象.getter方法
- 方法
- 声明方法时,可以省略参数类型、返回值类型
- return语句可以省略,默认使用方法最后一句的返回值作为方法返回值
- 调用方法时,在不引起歧义的情况下,()可以省略
- 引号
- 单引号:作为纯字符串使用,不支持变量引用,不支持换行
- 双引号:支持变量引用 ${变量名},不支持换行
- 三引号:不支持变量引用,支持换行操作
5.groovy类和java类的主要区别
- 没有可见性修饰符(public、protected、private)的类或方法默认是public的
- 没有可见性修饰符的字段将自动生成getter、setter,不需要显示的setter、getter方法
- 如果属性声明为final,则不会生成setter
6.groovy集合操作
- List
- add():添加某个元素
- plus():添加某个List集合
- remove():删除指定下标的元素
- removeElement():删除某个指定的元素
- removeAll():移除集合部分元素
- pop():弹出List中最后一个元素
- putAt():修改指定下标的元素
- each():遍历
- size():获取List中元素的个数
- contains():判断List是否包含指定的值
- Map
- put():向Map中添加元素
- remove():根据某个键、键值对做移除
- +、-:支持map集合的加减操作
- each():遍历map集合
7.闭包
- 是一个匿名代码块,可以接受参数,也可以有返回值,可以引用其周围作用域声明的变量
- 语法:
-
{ [params -> ] statements}
-
- 调用方法:
- 将闭包赋值给一个变量
- 变量名()、变量名.call()