当前位置: 首页 > news >正文

Groovy简介

Groovy简介

Groovy介绍

适用于 Java 平台的多功能语言。Apache Groovy 是一种强大、可选类型和动态的语言,具有静态类型和静态编译功能,专为 Java 平台设计,旨在通过简洁、熟悉且易于学习的语法提高开发者的生产力。它能够与任何 Java 程序无缝集成,并立即为您的应用程序提供强大的功能,包括脚本功能、领域特定语言(DSL)创作、运行时和编译时元编程以及函数式编程。

比较Java和Groovy语法

IDEA 中 Groovy 打开

image

在Groovy中可以编写更少代码的同时更高效地工作。

Java代码

package com.wise.tiger;public class ProjectVersion {private Integer major;private Integer minor;public ProjectVersion(Integer major, Integer minor) {this.major = major;this.minor = minor;}public int toMajor() {return major;}// setter/getter
}

Groovy为你所编写的类假定了合理的默认值

  1. 表达式后面的;是可选的
  2. 每个类、构造器和方法默认是public
  3. 方法体中最后一个表达式的值会被作为返回值(return语句是可选的)
  4. 自动添加setter/getter方法
  5. 类的属性(包括私有属性)可以通过.号来获取,底层调用的是setter/getter
  6. ==比较两个实例,调用的是equals方法,不会有空指针NullPointerException异常

Groovy代码

class ProjectVersion {private int majorprivate int minor/*** 类/方法/构造器默认是public* @param major* @param minor*/ProjectVersion(int major, int minor) {this.major = majorthis.minor = minor}int toMajor() {// 方法体中最后一个表达式的值会被作为返回值(return语句是可选的)major}// 自动添加setter/getter方法
}

Groovy高效特性

可选类型定义

image

可选的括号(方法调用)

image

高效字符串

image

image

Groovy集合API

Groovy为集合API的实现提供了简洁的语法,使得其比Java中类似的使用更加方便。

List

默认的类型就是ArrayList;集合元素可以接收任意的数据类型。

// List:默认为 ArrayList
def list = ['Ant', 'Maven', 'Gradle'] // 等价:List<String> list = new ArrayList<String>(['Ant', 'Maven', 'Gradle'])
// 完全兼容Java语法
list.add('Groovy')
// groovy API:添加元素
list << 'Base'// 定义LinkedList
// 1. as 关键字
def list2 = ['Ant', 'Maven', 'Gradle'] as LinkedList
// 2. new 关键字
def list3 = new LinkedList(['Ant', 'Maven', 'Gradle'])// 遍历
list.each { e ->println e
}

Map

默认实现是java.lang.LinkedHashMap

// Map:默认为 LinkedHashMap
def map = ['Ant': 2000, 'Maven': 2004]
// 查找
println map['Ant'] // 等价:println map.get('Ant')
// 添加
map['Gradle'] = 2008 // 等价:map.put('Gradle', 2008)// 迭代
map.each { k, v ->println "${k} was first released in ${v}"
}

命名参数

ProjectVersion类暴露了一个构造器来初始化其中的属性。假设你没有定义构造器,Groovy提供了一种更加方便的方式来设置属性值——命名参数。

class ProjectVersion {Integer major;Integer minor;
}def version = new ProjectVersion(major: 1, minor: 10)

闭包

闭包是一个类型为groovy.lang.Closure的代码块,和lambda表达式特性类似。闭包可以赋值给变量,作为参数传递给方法,并且可以像普通方法一样来调用。

隐式的闭包参数

每个没有显式定义任何参数的闭包都可以访问一个隐式的参数itit代表调用这个闭包的时候第一个传递进来的参数。如果没有提供参数,那么参数的值就是null

// 闭包:Closure的代码块,可以赋值给变量
// 隐式闭包
def closure = {println "hello world"println "隐式闭包参数:it:${it}"
}
closure()
closure('Peppa')

image

显式的闭包参数

除了使用隐式的闭包参数,也可以使用更具描述性的参数名。

// 显式闭包
class ProjectVersion {Integer major;Integer minor;
}
def incrementMajorProjectVersion = { projectVersion ->projectVersion.major++
}
def projectVersion = new ProjectVersion(major: 1, minor: 10)
incrementMajorProjectVersion(projectVersion)

定义多个无类型参数的闭包

def incrementMajorProjectVersion = { version, major, minor ->version.major = majorversion.minor = minor
}def projectVersion = new ProjectVersion(major: 1, minor: 10)
incrementMajorProjectVersion(projectVersion, 2, 1)

闭包返回值

闭包总是会返回一个值。返回值是闭包的最后一条语句的值(如果没有显式的return语句),或者是可执行的return语句的值。如果闭包的最后一条语句没有值,就返回null

http://www.jsqmd.com/news/56689/

相关文章:

  • 2025年评价高的高分子电缆桥架厂家最新TOP实力排行
  • 2025 年 12 月沈阳重工礼品厂家实力推荐榜:重型机械主题精品,企业定制与商务馈赠首选品牌!
  • 2025年口碑好的两轴自动滚丝机/气动夹紧滚丝机行业内知名厂家排行榜
  • 2025年热门的三节联动缓冲隐藏轨/三维缓冲隐藏轨用户口碑最好的厂家榜
  • 20232429 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 2025外转子风机选哪家好?靠谱外转子风机厂家推荐清单
  • 2025步进电机定制厂家有哪些?靠谱步进电机批发厂家盘点
  • 2025 年 12 月 γ-丁内酯厂家权威推荐榜:电子级/工业级/试剂级 γ-丁内酯,高纯度精细化工原料实力供应商精选
  • 2025年耐用的双屏显示器支架/探视显示器支架厂家推荐及选购参考榜
  • 2025车间降温设备哪家好?厂家综合实力榜单
  • 2025玻纤热压电池盖厂家+优质复合板手机后盖厂家精选
  • 2025年靠谱的轻集料混凝土LC5.0型/轻集料混凝土LC7.5型TOP实力厂家推荐榜
  • 2025年评价高的涤氨混纺四方立绒最新TOP厂家排名
  • 2025年比较好的混凝土排水沟厂家最新权威推荐排行榜
  • 2025年评价高的纳米大单槽厂家推荐及选购指南
  • 2025优选清单!实力三元乙丙密封条厂家合集
  • 德国/新加坡留学机构哪个好?2025高性价比中介TOP榜出炉
  • 2025 年 12 月熔模铸造厂家实力推荐榜:高温合金铸造、镍基高温合金、不锈钢铸件、精密铸造、汽车配件、泵阀类产品、五金锁具铸造工艺与加工服务全方位解析
  • [NOIP2025游记]???
  • 三石量化股票数据提取分析报告 - 2025年12月01日
  • 2025 年 12 月中国水泵厂家权威推荐榜:消防/多级/自吸/磁力/排污/真空/离心/卧式水泵,匠心制造与高效节能技术深度解析
  • 2025年十大哈尔滨婚姻律师事务所/哈尔滨工伤纠纷律师事务所综合推荐口碑榜
  • 2025年口碑好的丝杆升降机厂家最新TOP实力排行
  • 2025步进电机质量好的品牌有哪些?热门步进电机品牌推荐
  • 2025聚焦广东步进电机公司推荐:优质步进电机品牌有哪些
  • 纷享销客ShareAI通过国家级智能营销测评,开启CRM“主动赋能”时代
  • 2025 年 12 月密闭采样器厂家推荐排行榜,气体报警器,气体探测器,在线气体分析仪,工业安全监测设备品牌精选
  • 2025年知名的小单工装定制/工装定制设计厂家最新推荐权威榜
  • 利用无标签数据的深度学习算法解析:自训练技术
  • 2025年知名的双功能缓冲隐藏轨/定制缓冲隐藏轨厂家选购指南与推荐