Groovy代码示例 – groovy包(package)的导入

包的导入

为了可以使用其他类,groovy提供了与java包导入一样的功能。

比如,groovy提供了好几个builder类,比如:MarkupBuilder类,MarkupBuilder类在groovy.xml包下面,为使用该类,我们需要导入这个包。

//导入类MarkupBuilder
import groovy.xml.MarkupBuilder

//使用导入的类创建对象
def xml = new MarkupBuilder()

assert xml != null

默认的导入

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

对于默认已经导入的包,可以直接实例化包下面的类。

简单导入

简单导入指的是把类的完整类路径直接导入,比如:groovy.xml.MarkupBuilder

// importing the class MarkupBuilder
import groovy.xml.MarkupBuilder

// using the imported class to create an object
def xml = new MarkupBuilder()

assert xml != null

星号导入

groovy跟java一样支持通过星号的方式导入某个包下的所有类。

// importing the class MarkupBuilder
import groovy.xml.*

// using the imported class to create an object
def xml = new MarkupBuilder()

assert xml != null

静态导入

像java一样可以导入类的静态方法,然后可以像使用本地方法那样去使用它。与java不同的是,groovy允许导入名称相同类型不同的方法,如果有名称和类型都相同的导入方法,那么导入的方法将优先。

import static Boolean.FALSE
assert !FALSE //use directly, without Boolean prefix!

静态星号导入

静态导入也是可以支持星号导入的,可以导入一个类的所有静态方法

import static java.lang.Math.*

assert sin(0) == 0.0
assert cos(0) == 1.0

导入的别名

可以使用as关键字将完整的类名建立一个别名,然后可以通过这个自定义的别名去使用它。

package thirdpartylib

public class MultiplyTwo {
    def static multiply(def value) {
        return value * 3 //intentionally wrong.
    }
}

假定我们已经有一段代码如下:

def result = new MultiplyTwo().multiply(2)

因为名字相同,导致结果不是预期的。groovy为我们提供了一个优雅的方法在不改变外部类(thirdpartylib.MultiplyTwo)的基础保证我们代码逻辑的正确,参考以下代码:

import thirdpartylib.MultiplyTwo as OrigMultiplyTwo

class MultiplyTwo extends OrigMultiplyTwo {
    def multiply(def value) {
        return value * 2 // fixed here
    }
}

// 仍然可以使用MultiplyTwo,注意这里的MultiplyTwo不是我们导入的,导入的已经使用别名了,不会冲突
def multiplylib = new MultiplyTwo()

// assert passes as well
assert 4 == new MultiplyTwo().multiply(2)
上一篇 Groovy代码示例 - 变量variable及类型转换
下一篇 Groovy代码示例 - groovy类与脚本
目录
文章列表
1 Java私钥字符串转为PHP pem私钥
Java私钥字符串转为PHP pem私钥
2
FastJson中@JSONField注解使用
FastJson中@JSONField注解使用
3
无需绑定设备,下载Google Play上的某个apk文件
无需绑定设备,下载Google Play上的某个apk文件
4
React Native学习之调试与打包发布
React Native学习之调试与打包发布
5
ElasticSearch High Level REST API(1)文档基本操作
ElasticSearch High Level REST API(1)文档基本操作
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。