Я новичок в Javassist и пробую несколько руководств. Я понимаю, что Javassist помогает манипулировать байт-кодом и помогает добиться структурного отражения. Как упоминалось в вики (http://en.wikipedia.org/wiki/Javassist), я считаю, что у него есть поддержка для достижения отражения.
Я пытаюсь сделать базовую оценку, чтобы понять, сколько времени займет отражение Java для вызова метода и сколько времени займет javassist. В процессе предположим, что у меня есть класс:
public class Addition {
public int add(int a, int b){
return a+b;
}
}
Теперь, используя Java Reflection API, я бы использовал следующий код, чтобы рассчитать, сколько времени потребуется для вызова 100 объектов:
import java.lang.reflect.*;
public class ReflectionClass {
/**
* @param args
*/
public static void main(String[] args) {
int numberOfObjects = 10000;
double start,time;
try {
Class cls = Class.forName("Addition");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Method meth = cls.getMethod(
"add", partypes);
Addition methobj = new Addition();
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
start = System.currentTimeMillis();
for(int i=0;i<numberOfObjects;i++){
Object retobj= meth.invoke(methobj, arglist);
Integer retval = (Integer)retobj;
System.out.println(retval.intValue());
}
time = System.currentTimeMillis() - start;
System.out.println("Method call for "+numberOfObjects +" objects is::"+time +" milliseconds");
}
catch (Throwable e) {
System.err.println(e);
}
}
}
Теперь я не уверен, как поступить с javassist. то есть,
Я создам объект ctclass и сохраню класс, который буду читать. и я также мог бы получить все объявленные методы с помощью getdeclaredmethods и сохранить их в переменной ctMethod.
Но, в отличие от API отражения java, я не могу найти метод вызова в ctMethod API javassist. Означает ли это, что я должен создать повторяющийся метод и вызвать исходный метод, как описано в: http://www.ibm.com/developerworks/java/library/j-dyn0916/index.html.
Я не уверен, что это правильный путь.
Я что-то упускаю?