Есть ли в Groovy методы расширения, как в С#?

Могу ли я добавить метод в окончательный класс как в С#?

Так что я мог бы сделать что-то вроде:

"Some text".myOwnFunction();

Вместо:

MyStaticClass.myOwnFunction("Some text");

Ответ 1

Вы можете добавить его во все будущие строковые экземпляры через метакласс

    String.metaClass.myOwnFunction = {-> delegate.length() }
    assert "Tim".myOwnFunction() == 3

Или вы можете добавить его в один экземпляр

    String a = "Tim"
    a.metaClass.myOwnFunction = {-> delegate.length() }
    assert a.myOwnFunction() == 3

Или вы можете добавить эти методы, когда jar находится в пути к классам при запуске с модулями расширения