public class MetaTest{
def propertyMissing(String name){
println "missing property is:" + name;
return proxy(name)
}
/**
* @param name
* @return
*/
def proxy(String name){
def clazz = Class.forName(name);
def klazz = clazz.newInstance();
klazz.metaClass.methods.findAll{ it.name.startsWith("metaFuck") }.each{
op ->
println "entering delegate!"
klazz.metaClass."${op.name}" << {
String varArgs ->
println "entering inner clurse"
return varArgs + "acd";
}
}
return klazz;
};
/**
* @param args
*/
public static void main(String[] args){
MetaTest test = new MetaTest();
def resp = test.MetaFuck.metaFuckPrint("a,b,c,d,e,f,g,h");
println resp;
}
}
|