for (Method method:intface.getMethods()) {
methodStr +=
" @Override"+rt+
" public void "+ method.getName() +"() {"+rt+
" try{"+rt+
" Method m = "+ intface.getName()+".class.getMethod(\""+
method.getName() +"\");" + rt+
" h.invoke(tank,m);"+rt+
" }catch(Exception e){e.printStackTrace();}"+rt+
" }"+rt
;
}
String src =
"package com.zec.disignmode;"+rt+
"import java.util.Random;"+rt+
"import java.lang.reflect.*;"+rt+
"public class TankTimeProxy implements "+ intface.getName() +"{"+rt+
" "+ intface.getName() +" tank;"+rt+
" com.zec.disignmode.InvocationHandler h;"+rt+
"
public
TankTimeProxy("+
intface.getName()
+"
t,com.zec.disignmode.InvocationHandler h) {"+rt+
" tank = t;"+rt+
" this.h = h;"+rt+
" }"+rt+
methodStr+
"}";
/*Generate the java file*/
String
fileName
=
System.getProperty("user.dir")
+"/src/com/zec/disignmode/TankTimeProxy.java";
File f = new File(fileName);
FileWriter fw = new FileWriter(f);
fw.write(src);
fw.flush();
fw.close();
/*Generate the class file*/
JavaCompiler jc = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager jfMgr = jc.getStandardFileManager(null, null,
null);
Iterable units = jfMgr.getJavaFileObjects(fileName);
CompilationTask ct = jc.getTask(null, jfMgr, null, null, null, units);
ct.call();
jfMgr.close();