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



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

例如像这样的东西

class Original {
    def my_method() { }
}
class Meta {
    def meta_method() { }
}
def obj = new Original()
obj.metaClass = new Meta()
obj.meta_method()

你可以使用特质来实现这种事情。这比直接操作元类更"高级"

​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

最新更新