Я разработал класс, в котором есть несколько методов, которые расширяют Integer, в основном он позволяет мне делать это:
def total = 100.dollars + 50.euros
Теперь я должен расширить Integer.metaClass, выполнив что-то вроде этого:
Integer.metaClass.getDollars = {->
Money.Dollar(delegate)
}
Я пытался поместить это в конец файла, перед объявлением класса Money, но компилятор говорит, что класс Named Money уже существует, я знаю, почему это происходит (потому что groovy создает класс с именем файла с пустой статический void main для запуска этого кода).
Я также пытался использовать статический блок внутри класса следующим образом:
static {
Integer.metaClass.getDollars = {->
Money.Dollar(delegate)
}
}
Это тоже не работает.
Третьим решением было бы изменить имя файла (например, MoneyClass.groovy) и сохранить имя класса (класс Money), но это кажется немного странным.
Есть ли что-нибудь еще, что я могу сделать? Спасибо.