`

Groovy 是没有类型的 Java 代码

 
阅读更多

Groovy 是没有类型的 Java 代码

很可能将 Groovy 当成是没有规则的 Java 代码。但实际上,Groovy 只是规则少一些。这一节的重点是使用 Groovy 编写 Java 应用程序时可以不用考虑的一个 Java 编程的具体方面:类型定义。

为什么要有类型定义?

在 Java 中,如果要声明一个 String 变量,则必须输入:

String value = "Hello World";

但是,如果仔细想想,就会看出,等号右侧的字符已经表明 value 的类型是 String。所以,Groovy 允许省略 value 前面的 String 类型变量,并用 def 代替。

def value = "Hello World"

实际上,Groovy 会根据对象的值来判断它的类型。

运行程序!

将 HelloWorld.groovy 文件中的代码编辑成下面这样:

String message = "Hello World"
println message

运行这段代码,应该会在控制台上看到与前面一样的 “Hello World”。现在,将变量类型 String 替换为 def 并重新运行代码。是不是注意到了相同的结果?

除了输出 message 的值,还可以用以下调用输出它的类型:

def message = "Hello World"
println message.class

输出 “class java.lang.String” 应该是目前为止很受欢迎的一项变化!如果想知道到底发生了什么,那么可以告诉您:Groovy 推断出 message 一定是 String 类型的,因为它的值是用双引号括起来的。

类型推断的更多内容

您可能听说过,在 Groovy 中 “一切都是对象” — 但对于类型来说这句话意味着什么呢?让我们看看如果将前面示例中的 String 替换为数字会怎么样,如下所示:

def message = 12
println message.class

message 变量的数字值看起来像是 Java 的原生类型 int。但是,运行这个代码就可以看出,Groovy 将它作为 Integer。这是因为在 Groovy 中 “一切都是对象”。

Java 中的所有对象都扩展自 java.lang.Object,这对 Groovy 来说非常方便。即使在最糟的情况下,Groovy 运行时不能确定变量的类型,它只需将变量当成 Object,问题就解决了。

继续使用这段代码。将 message 改成自己喜欢的任意类型:Groovy 会在运行时尽其所能推断出这个变量的类型。

无类型有什么意义

那么,Groovy 缺少类型意味着所需的输入更少。不可否认,将 String 替换成 def 并没有真正节约多少打字工作 — 三个字母并不值得如何夸耀!但是在更高的层次上看,在编写大量不仅仅包含变量声明的代码的时候,没有类型确实减少了许多打字工作。更重要的是,这意味着要 阅读的代码要少得多。最后,Groovy 缺少类型能够带来更高的灵活性 — 不需要接口或抽象类。

所以,只需要使用 def 关键字就能在方法中声明一个独立变量,不需要将 def 关键字作为方法声明中的参数。在 for 循环声明中也不需要它,这意味着不用编写 (int x = 0; x < 5; x++),相反,可以省略 int,保留空白。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java中使用Groovy的三种方式

    在Java开发中,Groovy是一种强大的、动态类型的脚本语言,它可以无缝地与Java代码集成,为开发者提供了更简洁、灵活的语法。本文将深入探讨在Java项目中使用Groovy的三种主要方式,并阐述它们各自的优势和应用场景。...

    Java调用Groovy,实时动态加载数据库groovy脚本

    首先,Groovy是一种与Java高度兼容的脚本语言,它可以无缝地与Java代码集成,共享Java类库。Groovy代码可以被Java编译器理解,并且在运行时,GroovyShell或GroovyClassLoader等工具能够即时编译和执行Groovy脚本,这...

    hugo110-java_run_groovy-master_java_

    Groovy代码可以无缝地与Java代码集成,因为它们都编译成字节码并能在Java虚拟机(JVM)上运行。这个项目的核心目标就是展示如何在Java环境中运行Groovy脚本。 1. **Java与Groovy的交互**: - **GroovyShell**:...

    java 动态脚本语言 精通 Groovy

    1. **Groovy的简洁语法**:Groovy的语法比Java更加简洁,比如它允许省略括号、类型声明等,这使得代码更易读写。例如,方法调用可以不带括号,变量声明可以省略类型,如: ```groovy def sayHello() { println '...

    Groovy入门教程[参照].pdf

    3.兼容 Java:Groovy 可以与 Java 语言混合使用,Groovy 代码可以调用 Java 代码,反之亦然。 开发环境 1. JDK 1.5 以上 2. Eclipse + Groovy 插件(支持 Groovy 1.5.7) 创建 Groovy 项目 1. 新建一个 Java ...

    Java Groovy

    - **定义**:Groovy是一种面向对象的编程语言,它直接运行在Java平台上,并且能够与现有的Java代码无缝集成。 - **特点**: - **语法简洁**:Groovy提供了更为简洁、动态的语法特性,使得编写代码变得更加高效。 -...

    Java调用Groovy

    这篇博客文章“Java调用Groovy”可能会探讨如何在Java代码中执行Groovy脚本,以及这样做的优势和实践方法。 首先,Java可以通过`GroovyShell`或`GroovyScriptEngine`来执行Groovy脚本。`GroovyShell`是Groovy提供的...

    Groovy in Action源代码

    Groovy是一种面向对象的、动态的、强大的脚本语言,它是Java平台上的一个组件,可以无缝地与Java代码集成。Groovy结合了Java的类型安全性和脚本语言的灵活性,使得开发者能够以更简洁、高效的代码实现复杂的任务。...

    groovy

    Groovy代码可以直接与Java代码互操作,因为它们都被编译为Java字节码。这种兼容性使得Groovy成为Java开发者的理想选择,尤其是在需要快速原型、脚本编写或增强现有Java项目时。 二、语法特性 1. 更简洁的语法:...

    Groovy脚本:Java平台的动态编程利器

    Groovy是一种运行在Java平台上的动态脚本语言,它与Java紧密集成,提供了一种简洁、灵活的方式来编写Java代码。Groovy不仅支持静态类型检查,还可以在运行时动态地编译和执行代码,这使得它在Java平台中的应用场景...

    groovy-demo-java-for-refactor:在演示期间用于重构为Groovy的示例Java代码

    项目中的Java代码是经过精心选择的,涵盖了常见的类、方法和控制结构,如循环、条件语句、异常处理等。在重构过程中,这些Java代码片段将被转换成Groovy的等价表达,展示Groovy的简洁性和可读性。例如,Java的if-...

    groovy-src-1.8.5.zip_.bzrignore_Groovy_Java 8_groovy src_lowern

    Groovy结合了脚本语言的简洁性和动态性,同时提供了静态类型的编译选项,使得它在Java开发环境中尤其受欢迎。在这个"groovy-src-1.8.5.zip"压缩包中,我们能找到Groovy 1.8.5版本的源代码,这对于学习、调试或扩展...

    groovy programming(2006.12).pdf

    Groovy不仅能在Java虚拟机(JVM)上运行,还能与现有的Java代码无缝集成,这使得Groovy成为Java生态系统中的一个强大补充。 ### 本书的核心知识点 #### 1. Groovy语言的基础语法 书中详细介绍了Groovy的基础语法,...

    Groovy简单语法开发Java应用程序[汇编].pdf

    Groovy在保留Java的大部分语法结构的同时,引入了许多简化和灵活性的特性,使得代码更加简洁和高效。 Groovy的核心优势在于它的动态性,这允许开发者在运行时进行类型检查和代码修改,大大简化了开发流程。与Java...

    Groovy中文版教程

    5. **与Java的无缝集成**:Groovy可以调用Java代码,反之亦然。这意味着你可以在同一个项目中混合使用Java和Groovy,方便地利用已有的Java资产。 6. ** Grape**:Grove的依赖管理工具Grape,可以自动下载并管理项目...

    groovy program

    指向了Groovy编程语言,这是一款基于JVM(Java虚拟机)的敏捷开发语言,它兼容Java语言,并且引入了多种动态语言特性,例如动态类型、闭包和扩展的元编程支持。由于描述中提到了“Programming Groovy 2”,可以认为...

    apache-groovy-sdk-4.0.1下载

    解释器允许你运行Groovy脚本,而编译器则可以将Groovy代码转换成Java字节码,使得Groovy程序能在Java虚拟机(JVM)上运行。这对于Java开发者来说是个巨大的优势,因为他们可以无缝地将Groovy集成到现有的Java项目中...

    groovy速查手册

    - **跨编译**:通过Groovy的编译器(`groovyc`),Ant任务或者集成开发环境(IDE)的支持,可以将Groovy代码与Java代码一起编译。这样做的好处在于,你可以像使用Java代码一样使用Groovy代码,无需担心兼容性问题。 ...

    Z2-Groovy in Action.pdf

    Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它与Java语言无缝集成,同时提供了动态语言的许多特性,例如动态类型、闭包(closures)和元编程等。它由James Strachan于2003年首次提出,并迅速受到了社区的...

Global site tag (gtag.js) - Google Analytics