簡體   English   中英

調用時導入的類如何在 Groovy Closure 中工作?

[英]How imported class work in Groovy Closure when calling it?

我有一個 Groovy Closure,它使用了一些導入類,例如:

import com.XXX

Closure test = { a -> XXX(a) }

test('some str')

導入的類 XXX 如何在閉包測試中工作,因為我從未在測試中定義過 XXX。 在這種情況下,委托和所有者指向當前腳本,但仍然不知道導入是如何工作的。

謝謝

這個例子有效,也許看看你如何指定import語句的包結構:

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 類),並且它可以在任何被調用的類中工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM