groovy使用自己的自定义方法定义元类,并为对象设置它

时间:2016-01-27 09:30:29

标签: groovy metaclass

是否可以使用自定义方法为metaclass中的对象设置groovy?我的意思是某种动态继承......

例如像

这样的东西
class Original {
    def my_method() { }
}

class Meta {
    def meta_method() { }
}

def obj = new Original()
obj.metaClass = new Meta()

obj.meta_method()

1 个答案:

答案 0 :(得分:2)

您可以使用特征来实现此类事情。它比直接操纵元类

更“高级”
​class Original {
  def my_method() { } 
}  

trait Meta {
  def meta_method() { } 
}  

def obj = new Original()​.withTraits Meta
​obj.meta_method()​

请参阅:http://docs.groovy-lang.org/next/html/documentation/core-traits.html#_implementing_a_trait_at_runtime