基于Groovy的The Meta-Object Protocol (MOP) ,允许你在运行时,向一个对象里添加属性和方法。使用MOP,你能在运行时向一个已经存在的对象中新增方法和属性。
一个类中,一个方法被调用或者一个属性被访问,并且该类并没有这个方法或者属性,那么预先定义的方法被调用来处理这个调用。
以上预定义的方法,Groovy对象实例有默认的实现,但是Groovy对象能重写这些方法。在运行时,如果一个方法或属性不存在,则Groovy框架会调用以上方法。例如,使用Groovy的builder模式,会假装认为有该方法。
使用.metaclass
,来向一个已经存在的类中新增方法和属性。
package mop
class MopTest { static main(args) { Todo.metaClass.summary = ‘Learn MOP‘ Todo.metaClass.done = false Todo.metaClass.markAsFinish = {-> done=true}
Todo t = new Todo() t.markAsFinish() println(t.done); } } class Todo {} |
注意:class Todo {}必须放在class MopTest的后边,否则报错。
输出
true |
原文:http://www.cnblogs.com/yaoyuan2/p/5719217.html