Grails - глобальные методы и программирование метаклассов - PullRequest
2 голосов
/ 23 июня 2011

Я вставил эту строку в свой init () моего класса BootStrap

Integer.metaClass.minutes = { 60000L * delegate }

Тогда я не смог использовать его из класса Job (плагин Quartz).Я помещаю эту строку кода где-нибудь еще, чтобы сделать ее глобальной модификацией?

Мне также был интересен лучший способ сделать функцию доступной во всех классах в Grails.Как глобальная функция.Будет ли расширять метакласс Object?или есть лучший способ?

1 Ответ

1 голос
/ 23 июня 2011

Нужно ли поместить эту строку кода где-нибудь еще, чтобы сделать ее глобальной модификацией?

Использовать DelegatingMetaClass

Iтакже интересовался лучшим способом сделать функцию доступной во всех классах в Grails.Как глобальная функция.Будет ли расширять метакласс Object?или есть лучший способ?

Если вы хотите, чтобы функция была методом экземпляра всех классов, вы должны добавить ее в метакласс Object (см. выше).Если нет, просто добавьте функцию как статический метод класса, то есть так же, как вы делаете функции глобально доступными в Java.

...