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

groovy define metaclass with its own custom methods and set it for the object

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

例如像这样的东西

class Original {
    def my_method() { }
}

class Meta {
    def meta_method() { }
}

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

obj.meta_method()

你可以使用特征来实现这种事情。比直接操作元类

多一点"high level"
​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