文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Groovy动态语言使用教程简介

2024-04-02 19:55

关注

Groovy 简介

Groovy 是构建在 JVM 上的一个轻量级却强大的动态语言,它结合了 Python、Ruby 和 Smalltalk 的许多强大的特性。 Groovy 就是用 Java 写的,Groovy 语法与 Java 语法类似,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。相对于 Java,它在编写代码的灵活性上有非常明显的提升,Groovy 可以使用其他 Java 语言编写的库。

Groovy 是增强 Java 平台的唯一的脚本语言。它提供了类似于 Java 的语法,内置映射(Map)、列表(List)、方法、类、闭包(closure)以及生成器。脚本语言不会替代系统编程语言,两者是相互补充的。

系统编程语言的目的:

脚本语言应用的目的:

Groovy 应用

大名鼎鼎的 Gradle,背后是 Groovy。Spring 的未来越来越多的使用 Groovy,甚至在用 Jira 跟踪项目时,背后也有 Groovy。实际上,就应用场景而言,Java 开发已经有越来越多的 Groovy 出现在后台了。而对于一般的应用开发,只要能用 Java 就都能用到 Groovy,唯一的难点只在于能不能招到足够的人员。

Groovy 与 Java

Java 编译器会产生可以在 Java 虚拟机上运行的字节码。Groovy 类和 Java 是二进制兼容的。Groovy 编译器产生的字节码与 Java 编译器产生的字节码是完全一样的。对于 JVM 而言,Groovy 和 Java 是完全一样的。因此,Groovy 能够完全使用各种 Java API。Groovy 是一门面向对象的语言。也就是说,Groovy 中每一个事物最终都会被当做某些类的一个实例对象。

Groovy语法特性(相比于Java)

Groovy 编译器产生的字节码与 Java 编译器产生的字节码是完全一样的。对于 JVM 而言,Groovy 和 Java 是完全一样的。因此,Groovy 能够完全使用各种 Java API。


// java
if (object != null) {
    object.getFieldA();
}
// groovy
object?.getFieldA()

强大命令链功能。Groovy 可以使你省略顶级语句方法调用中参数外面的括号。命令链功能则将这种特性继续扩展,它可以将不需要括号的方法调用串接成链,既不需要参数周围的括号,链接的调用之间也不需要点号


def methodA(String name) {
    println("A: " + name)
    return this
}
def methodB(String name) {
    println("B: " + name)
    return this
}
def methodC() {
    println("C")
    return this
}
def methodD(String name) {
    println("D: " + name)
    return this
}
methodA("张三")
methodB("李四")
methodC()
methodD("王五")
// 不带参数的链中需要用括号 
methodA "张三" methodB "李四" methodC() methodD "王五"

闭包。闭包是一个短的匿名代码块。每个闭包会被编译成继承 groovy.lang.Closure 类的子类,这个类有一个叫 call 方法,通过该方法可以传递参数并调用这个闭包。

def hello = {println "Hello World"}
hello.call()
// 包含形式参数
def hi = {
    person1, person2 -> println "hi " + person1 + ", "+ person2
}
hi.call("张三", "李四")
// 隐式单个参数, 'it'是Groovy中的关键字
def hello = {
    println("hello, " + it)
}
hello.call("王五")

with语法(闭包实现)

// Java
public class JavaDeamo {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.MONTH, Calendar.DECEMBER);
        calendar.set(Calendar.DATE, 4);
        calendar.set(Calendar.YEAR, 2018);
        Date time = calendar.getTime();
        System.out.println(time);
    }
}
// Groovy
Calendar calendar = Calendar.getInstance()
calendar.with {
    // it 指 calendar 这个引用
    it.set(Calendar.MONTH, Calendar.DECEMBER)
    // 可以省略it, 使用命令链
    set Calendar.DATE, 4
    set Calendar.YEAR, 2018
    // calendar.getTime()
    println(getTime())
    // 省略get, 对于get开头的方法名并且
    println(time)
}

数据结构的原生语法,写法更便捷

def list = [11, 12, 13, 14] // 列表, 默认是ArrayList
def list = ['Angular', 'Groovy', 'Java'] as List // 字符串列表
// 同list.add(8)
list << 8
[1, 2, [3, 4], 5] // 嵌套列表
['Groovy', 21, 2.11] // 异构的对象引用列表
[] // 一个空列表
def set = ["22", "11", "22"] as Set // LinkedHashSet, as运算符转换类型
def map = ['TopicName': 'Lists', 'TopicName': 'Maps'] // map, LinkedHashMap
[:] // 空map
// 循环
map.each {
    print it.key
}

以上就是Groovy动态语言使用教程简介的详细内容,更多关于Groovy动态语言的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯