Mustafa
Mustafa

Reputation: 981

Does Groovy have extension methods like in C#?

Can I add to a method to a final class somehow like in C#?

So I could do something like:

"Some text".myOwnFunction();

Instead of:

MyStaticClass.myOwnFunction("Some text");

Upvotes: 22

Views: 6261

Answers (1)

tim_yates
tim_yates

Reputation: 171144

You can either add it to all future string instances via the metaClass

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

Or you can add it to a single instance

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

Or you can add these methods when a jar is in the classpath at startup with extension modules

Upvotes: 26

Related Questions