当前位置: 首页 > 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.gsyq.cn/news/66951.html

相关文章:

  • 2025年热门的三节联动缓冲隐藏轨/三维缓冲隐藏轨用户口碑最好的厂家榜
  • 2025 年 12 月 γ-丁内酯厂家权威推荐榜:电子级/工业级/试剂级 γ-丁内酯,高纯度精细化工原料实力供应商精选
  • 2025车间降温设备哪家好?厂家综合实力榜单
  • 2025 年 12 月熔模铸造厂家实力推荐榜:高温合金铸造、镍基高温合金、不锈钢铸件、精密铸造、汽车配件、泵阀类产品、五金锁具铸造工艺与加工服务全方位解析
  • [NOIP2025游记]???
  • 2025步进电机质量好的品牌有哪些?热门步进电机品牌推荐
  • 2025 年 12 月密闭采样器厂家推荐排行榜,气体报警器,气体探测器,在线气体分析仪,工业安全监测设备品牌精选
  • 2025年知名的双功能缓冲隐藏轨/定制缓冲隐藏轨厂家选购指南与推荐
  • 开源企业级 IM!一款高颜值的即时通讯聊天应用!
  • 2025年兰州牛肉面加盟十大品牌权威推荐榜单
  • 2025年热门的玻璃温室大棚/阳光玻璃温室厂家推荐及采购指南
  • 2025 年 12 月 RJ45 插座厂家权威推荐榜:圆形防水 RJ45,D 型防水 RJ45,工业级耐用连接器精选品牌解析
  • 2025靠谱橡胶密封条厂家+定制橡胶密封件厂家测评
  • 2025年洗发水TOP5榜单出炉!针对不同发质兼顾防脱控油修护,款款都是口碑之王!
  • 2025 年 12 月电线电缆租赁厂家推荐排行榜,电缆线出租,临时用电电缆租赁,电力电缆租赁,空调电缆租赁,高效安全供电解决方案精选
  • 2025年江苏钢球供应商排名:钢球厂家有哪些?
  • 2025 年 12 月四合院全流程服务权威推荐榜:设计/施工/改造/修缮/装修,古韵匠心与现代化工艺完美融合的经典之选
  • 10 个稳定可用的电子书来源
  • 2025年通用发酵罐厂家权威推荐榜单:好氧发酵罐‌/菌种发酵罐‌/发酵罐‌源头厂家精选
  • 2025年抖音去水印TOP榜单:8款工具效率大揭秘
  • 小红书去水印TOP榜单:10款工具免费使用体验揭晓
  • 2025年小红书去水印TOP榜单:9款工具无广告体验揭秘
  • 2025年比较好的人造丝绒/印花丝绒厂家推荐及选择指南
  • 美白祛斑用什么产品效果最好?2025年十大高效美白产品真实测评与体验分享
  • 南京离婚律师找谁?2025年10位婚姻律师最新名单
  • 2025美白产品推荐|这瓶国货黑马正重新定义美白淡斑法则
  • 2025年宜昌十大短视频代运营服务哪家专业排行榜,知名大型短
  • 2025年比较好的输送线/重载式精密输送线厂家最新热销排行
  • 2025年手动喷砂机公司推荐:手动模具喷砂机源头厂家与解析
  • 2025年比较好的空气炸锅冷冻薯条性能对比优选榜