当调用导入类时,它是如何在Groovy闭包中工作的



我有一个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类(,并且它将在任何被调用的类中工作。

最新更新