我使用了Javassist API來創建一個方法:調用自定義類加載器的用Javassist
CtMethod newmethod = CtNewMethod.make("public boolean preRemove(){return size==getObjectSize();}",ctclass);
這個方法調用,在這種情況下,我得到存在於該類
的另一種方法getObjectSize() attempted duplicate class definition for name
與LinkageError
由該指令引發Class clazz = ctclass.toClass();
所以,我試圖創建自己的ClassLoader CustomClassLoader loader = new CustomClassLoader();
,然後當我列出的類
ClassPool pool = ClassPool.getDefault();
CtClass ctclass = pool.get("javaExp.SinglyLinkedList");
ctclass.stopPruning(true);
CtMethod newmethod = CtNewMethod.make("public boolean preRemove(){return size==getObjectSize();}",ctclass);
ctclass.addMethod(newmethod);
ctclass.writeFile();
Class<?> clazz =loader.loadClass("javaExp.SinglyLinkedList");
Method []m= clazz.getDeclaredMethods();
for(int i=0;i<m.length;i++){
System.out.println(m[i].getName());
}