如何扩展Class方法并实现其子类

时间:2015-03-26 14:23:31

标签: groovy metaprogramming

例如:

class Kls {

}

class SubKls extends Kls {

}

Kls.metaClass {
    trySmth() {}
}

new SubKls().trySmth()

我希望SubKls可以调用扩展方法#trySmth

更新:也许我可以使用#invokeMissingMethod来解决它,但这还不够,因为我还想扩展一些核心类,如java.lang.Object和java.lang.String

1 个答案:

答案 0 :(得分:0)

groovy 2.4.0没问题:

class Kls {}

class SubKls extends Kls {}

Kls.metaClass {
  foo = {'bar'}
}

assert new SubKls().foo() == 'bar'