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)
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/05/07/groovy-code-example-package-import/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论