我有一个Groovy闭包,它使用了一些导入的类,比如:
import com.XXX
Closure test = { a -> XXX(a) }
test('some str')
导入的类XXX是如何在闭包测试中工作的,因为我从未在测试中定义过XXX。在这种情况下,委托和所有者指向当前脚本,但仍然不知道导入是如何工作的。
感谢
这个例子很有效,也许可以看看如何指定导入语句的包结构:
assert org.apache.commons.lang3.text.WordUtils.capitalizeFully('groovy closure') == 'Groovy Closure'
import org.apache.commons.lang3.text.WordUtils
Closure test = { a -> WordUtils.capitalizeFully(a) }
assert test('groovy closure') == 'Groovy Closure'
我终于发现这是一个与Java相关的问题。
Java中的"import"关键字是一种语法糖,它可以让您声明一个没有完整路径名的类。当编译类文件时,类名将被编译器导入的完整路径所取代。
因此,在我的例子中,XXX将在Closure中编译为com.XXX(不管它是Java还是Groovy类(,并且它将在任何被调用的类中工作。