Как работает импортированный класс в Groovy Закрытие при его вызове? - PullRequest
0 голосов
/ 02 марта 2020

У меня есть Groovy Закрытие, которое использует некоторый импортированный класс, такой как:

import com.XXX

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

test('some str')

Как импортированный класс XXX работает внутри теста закрытия, так как я никогда не определял XXX в тесте. В этом случае делегат и владелец указывают на текущий скрипт и все еще не понимают, как работает импорт.

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Я наконец-то понял, что это вопрос, связанный с * 1006. *

Ключевое слово «import» в Java является своего рода синтаксическим сахаром, который позволяет вам претендовать на класс без полного пути. И когда файл класса будет скомпилирован, имя класса будет заменено полным путем импорта компилятором.

Так что в моем случае XXX будет скомпилирован в com.XXX внутри Closure (не имеет значения, это класс Java или Groovy), и он будет работать в любом вызванном классе.

0 голосов
/ 02 марта 2020

Этот пример работает, возможно, посмотрите, как вы указываете структуру пакета оператора импорта:

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...