一段运行时修改方法的代码......
groovy的meta programming 果然强大..... 好吧 其实是我见识少.....
早就想写一段javascript prototype代码风格的groovy代码了.....
于是折腾了半天就折腾出来这么样的东东.....
groovy的meta programming 果然强大..... 好吧 其实是我见识少.....
早就想写一段javascript prototype代码风格的groovy代码了.....
于是折腾了半天就折腾出来这么样的东东.....
class MetaTest{
def propertyMissing(String name){
return Proxy(name);
}
def Proxy(String name){
println "entering proxy"
def clazz = Class.forName(name);
def klazz = clazz.newInstance();
klazz.metaClass.methods.findAll { it.name == "getTest" }.each {
op->
println "entering in method"
klazz.metaClass."${op.name}" << { String a ->
a = "call up"
return a;
}
}
return klazz;
}
public static void main(String[] args){
MetaTest t = new MetaTest();
println (t.MetaFuck.getTest("absc"));
}
}
class MetaFuck {
static public String getTest(String arg){
return arg;
}
}