background image

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();