向实例中注入动态方法、属性
前面是向类中注入动态方法,即该类创建的对象都可以调用该动态方法;但是如果你要想只对某一个特定对象注入动态方法,即其他对象不可调用;
1、方式一:复杂方式
步骤:
1. 创建ExpandoMetaClass对象
2. 向该MetaClass对象注入动态方法
3. 对MetaClass初始化 (meTaClass.initialize()),说明方法或者属性添加完毕
4. 将MetaClass对象附到想要增强的对象上
class Person {
int id
String name
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(int id, String name) {
super();
this.id = id;
this.name = name;
}
def void test(){
println "============test()====================="
}
}
调用代码:
def emc = new ExpandoMetaClass(Person.class)
//注入方法
emc.say={String content->