Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >13. Groovy 语言结构-包名,imports导入知识学习

13. Groovy 语言结构-包名,imports导入知识学习

作者头像
zinyan.com
发布于 2022-12-07 10:31:50
发布于 2022-12-07 10:31:50
1.9K00
代码可运行
举报
文章被收录于专栏:zinyanzinyan
运行总次数:0
代码可运行

1. 介绍

Groovy学习的第13篇内容。从本篇开始,学习Groovy的语言结构知识。想了解和使用一门语言,对于该语言的语法,关键字等知识了解后。

就需要了解语言结构了,知道怎么写的代码是规范的。怎么定义项目名称,导入外部依赖等等知识。

如果有其他语言的一些基础打底,本篇的相关知识可以很容易理解。

2. 包名-Package Names

在Groovy中定义包名和包名所产生的作用和Java中是完全相同的。Groovy并没有自己的特殊的包名定义规则。

定义包名可以允许我们在没有任何冲突的情况下高效分离各种代码库。Groovy类必须在类定义之前,指定其包。否则将会定义为默认包。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.zinyan.demo

class Zinyan{

}

我们创建包名的原因有部分因素就是为了方便互相imports导入我们的其他类对象。系统的类存储在固定的包名路径下了。

我们的Groovy代码,如果写了多个模块。多个类之中。那么我们就应该通过包名将它进行分割。

而分割之后,互相之间要引用。那么就可以通过包名+类名。进行相对路径的引用了。

PS:通常我们在各种插件工具中,使用Groovy添加脚本时,脚本不用谢package定义包名。

3. Imports 导入

在Groovy中,引用其他路径下的类。也是通过关键字:import进行导入的。例如专属于Groovy中定义的MarkupBuilder类。我们如果要想使用它,就需要在类中添加导入信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import groovy.xml.MarkupBuilder

例如我们完整使用的效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.zinyan.demo

import groovy.xml.MarkupBuilder
class Zinyan{

    def static main(def args) {
        def temp = new MarkupBuilder()
        println(temp)
    }
}

3.1 默认导入

默认情况下所有的Groovy类都导入了以下包结构下面的类:

  • import java.lang.*
  • import java.util.*
  • import java.io.*
  • import java.net.*
  • import groovy.lang.*
  • import groovy.util.*
  • import java.math.BigInteger
  • import java.math.BigDecimal

我们如果要用的外部类是在上面这些包路径下,那么我们可以省略import的导入。

Groovy这样做是因为这些包中的类是最常用的。我们可以不用关注它们的导入,减少导入样板代码量。

3.2 基本导入

我们上面的示例中展示了导入效果。我们如果想使用某个不在同一目录下的外部类。

那么通过 import 包名+类名 的样式就可以导入了,这种导入方式只是导入了该指定的类。如果是这个包路径的全部类,甚至包括子路径里面的类。

那么可以使用上面默认示例中的*号,直接导入全部就可以了。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//第一种 基本导入方式
import groovy.xml.MarkupBuilder
import groovy.xml.StreamingMarkupBuilder

//第二种 通配符导入方式
import groovy.xml.*

这两种导入之后。我们在下面的代码中都可以使用MarkupBuilderStreamingMarkupBuilder类。

这两者之间,在程序初始化等编译效率上是有些差异的。在实际使用中,大家更多的使用第一种基本导入方式。

因为这个可以直观的了解到,我们下面的代码都依赖了哪些关键类。

3.3 静态导入 static关键字

我们在导入类的时候,也可以导入属性。例如定义为static对象。我们可以通过import static 进行导入。示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import static Boolean.FALSE

println(FALSE)  //输出false

这类似于Java的静态导入功能,但比Java更动态,因为它允许您定义与导入方法同名的方法,只要您有不同的类型。示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import static java.lang.String.format 

class ZinyanDemo {

    String format(Integer i) { 
        i.toString()
    }

    def static main(def args) {
        //我们可以直接使用 static 静态导入的format方法
        println(format('zinyan')) //输出 zinyan
        //我们也可以使用自定义类中的方法
        println(new ZinyanDemo().format(1024)) //输出 1024
    }
}

如果具有相同的类型,则导入的类优先。

在静态导入下,我们添加*号后与常规星形导入非常相似。区别在于它将从给定类导入所有静态方法。

例如,假设我们需要为应用程序计算正弦和余弦。类java.lang.Path具有名为sincos的静态方法,符合我们的需要。借助静态星形导入,示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import static java.lang.Math.*
//我的类中没有sin 和cos方法,以下方法通过import static 导入的Math类中的静态方法
println(sin(90)) //输出:0.8939966636005579
println(cos(45)) //输出:0.5253219888177297

3.4 别名导入

我们如果导入的类和已有的类冲突了,可以通过 as 进行命名。在第11篇,运算符学习中介绍过as关键字。它可以用于类型强制转换。

而我们在import导入外部类时,可以用该关键字进行命名。之后就可以用新命名的名称引用该类了。示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import static java.lang.String.format  as zinyan

def static main(def args) {
    println(zinyan('https://zinyan.com')) //输出 https://zinyan.com
}

上面的是静态导入,可以导入方法和类。我们如果不使用static关键字,也可以使用as进行别名的。示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//例如两个相同的Date类,分别在不同的包下。
import java.util.Date 
import java.sql.Date as SQLDate  //我们将sql.Date 别名为SQLDate

//使用
Date utilDate = new Date(1000L)
SQLDate sqlDate = new SQLDate(1000L)


println(utilDate.getClass().getName())  //输出:java.util.Date
println(sqlDate.getClass().getName())  //输出:java.sql.Date

4. 小结

本篇介绍的内容比较基础,总的来说就是Groovy导入的方式和java中可以说是一样的。而唯一需要注意的就是Groovy中为每个类默认导入的一些工具类。

我们在实际使用中可以免于那些类的import

相关知识参考Groovy官网文档:http://docs.groovy-lang.org/docs/groovy-4.0.6/html/documentation/#_package_names

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 zinyan 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
14. Groovy 语言结构-脚本和类知识学习
本篇内容为Groovy学习第十四篇内容。本篇内容为Groovy语言中的脚本(Script)和类(classes)的知识。
zinyan.com
2022/12/07
1.2K0
22. Groovy 面向对象编程-Traits特性学习-第三篇 super关键字
前面介绍了如何创建traits,如何使用traits。如何使用多个trait以及继承和运行时状态下的traits使用
zinyan.com
2023/02/23
5190
22. Groovy 面向对象编程-Traits特性学习-第三篇 super关键字
23. Groovy 面向对象编程-Traits特性学习-第四篇 高级功能
例如方法继承与Java8的区别。与Mixins的差异。以及静态方法属性和字段等相关知识点,
zinyan.com
2023/02/23
4960
23. Groovy 面向对象编程-Traits特性学习-第四篇 高级功能
21. Groovy 面向对象编程-Traits特性学习-第二篇
本篇内容为Groovy学习第二十一篇,上篇学习了Traits的一些使用。本篇继续深入学习Traits相关知识。
zinyan.com
2023/02/23
4890
21. Groovy 面向对象编程-Traits特性学习-第二篇
Static 关键字的 5 种用法,你会几种?
说到static,静态变量和静态方法大家随口就来,因为他们在实际开发中应用很广泛,但他们真正在使用的时候会存在很多问题,而且它的使用不只那两种:
JavaFish
2019/10/17
7050
Groovy-2.基本语法
as,assert,break,case,catch,class,const,continue,def,default,do,else,enum,extends,false,Finally,for,goto,if,implements,import,in,instanceof,interface,new,pull,package,return,super,switch,this,throw,throws,trait,true,try,while
悠扬前奏
2019/06/02
6400
Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字
  首先包其实就是个文件夹.作用就是管理类. Java中每次定义一个类的时候.通过Java编译之后.都会生成一个扩展名为.class的文件.但是当这个程序规模逐渐庞大的时候.就很容易发生类名名称冲突的现象. 那么JDK API中. 提供了成千上万的具有各种功能的类.有效的管理就是通过类包来管理.
IBinary
2019/05/25
6120
大数据必学Java基础(三十八):包和import讲解
(1)使用不同包下的类要需要导包: import **.*.*; 例如:import java.util.Date;
Lansonli
2022/08/02
3040
大数据必学Java基础(三十八):包和import讲解
2--Gradle入门 - Groovy简介、基本语法
Gradle 需要 Groovy 语言的支持,所以本章节主要来介绍 Groovy 的基本语法。
Devops海洋的渔夫
2023/09/01
1K0
2--Gradle入门 - Groovy简介、基本语法
25. Groovy 孵化功能-记录类record和密封sealed的学习
本篇内容为Groovy学习笔记第二十五篇。主要内容为Groovy孵化功能(incubating)的学习。
zinyan.com
2023/02/23
1K0
25. Groovy 孵化功能-记录类record和密封sealed的学习
34. Groovy 语法 类型知识详解-第一篇
本篇内容开始介绍Groovy中的各种类型知识。将会分多篇文章详细介绍和学习Groovy中的有关于类型的相关知识点。
zinyan.com
2023/02/23
7990
34. Groovy 语法 类型知识详解-第一篇
static 关键字的用法
在 Java 中,static 关键字是一个重要的修饰符,用于表示类级别的成员。了解 static 的用法有助于更好地管理内存和提高代码的效率。以下是 static 关键字的几种主要用法:
繁依Fanyi
2024/10/28
1230
27. Groovy 闭包知识-第二篇 委托和授权学习
这一篇开始学习闭包的授权策略等知识点。例如和lambda的区别,闭包的委托delegate,所有owner等作用。
zinyan.com
2023/02/23
4880
27. Groovy 闭包知识-第二篇 委托和授权学习
Java 静态导入:规则、实践与应用场景
Java 编程中,“静态导入”(import static)自 Java 5 引入,是提升代码可读性和编写效率的技巧。但需正确恰当使用。本文探讨其机制、规则、常见错误及在实际开发中的应用。
Yeats_Liao
2025/01/06
1420
Java 静态导入:规则、实践与应用场景
17. Groovy 面向对象编程-类成员学习-第二篇
本篇文章为Groovy语言学习第十七篇,在上一篇针对类成员信息的学习了解了构造函数的多种模式,方法的创建方式,
zinyan.com
2022/12/08
4610
29. Groovy 语法-变量定义与多重赋值
本篇开始,将基于Groovy官方文档中的语义模块:Groovy Language Documentation (groovy-lang.org) 完整详细的学习Groovy语言的各种基本语义知识。
zinyan.com
2023/02/23
2.3K0
29. Groovy 语法-变量定义与多重赋值
JAVA入门学习四
描述:有个这个关键字就是让有包的类对调用者可见,不用写全类名了; 比如我们前面在进行Scanner类示例化的对象来接收用户输入;
全栈工程师修炼指南
2022/09/28
4760
JAVA入门学习四
19. Groovy 面向对象编程-注解学习
本篇为Groovy学习笔记第十九篇。分享关于注解的相关知识。Annotations(注解)。现在的各种开发语言可以说都有注解。
zinyan.com
2022/12/08
8050
28. Groovy 闭包知识学习-第三篇 终篇
本篇内容为Groovy学习笔记第28篇,继续学习闭包相关知识。前面介绍了闭包的创建与使用,以及闭包的委托等和授权策略。
zinyan.com
2023/02/23
9551
28. Groovy 闭包知识学习-第三篇 终篇
Java之static作用的全方位总结
 引用一位网友的话,说的非常好,如果别人问你static的作用;如果你说静态修饰 类的属性 和 类的方法 别人认为你是合格的;如果是说 可以构成 静态代码块,那别人认为你还可以; 如果你说可以构成 静态内部类, 那别人认为你不错;如果你说了静态导包,
小勇DW3
2018/08/30
1.6K0
Java之static作用的全方位总结
相关推荐
14. Groovy 语言结构-脚本和类知识学习
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验