条件类导入/加载

joh*_*rew 5 import groovy class

在 Groovy 脚本中是否可以执行条件导入语句?

if (test){
    import this.package.class
} else {
    import that.package.class
}
Run Code Online (Sandbox Code Playgroud)

这样做的背景是想在 MacOS 10.5 上使用一些东西,它只有 JDK1.5,所以一个特定的类不可用,但我找到了一个为其编写了向后移植的人。

Joh*_*ner 4

无法有条件地导入类,但您可以通过尝试加载该类,然后加载另一个类(如果找不到该类)来实现类似的效果。

这只是一个例子:

def someClass
try {
    someClass = "org.apache.webdavlib.WebdavFile" as Class
} catch (Exception ex) {
    someClass = "java.io.File" as Class
}

def someInstance = someClass.newInstance("~/project/temp.log")

assert "java.io.File" == someInstance.getClass().getName()
Run Code Online (Sandbox Code Playgroud)