标签:javaassist java反射
javaassist
ClassPool 是javassist的一个对象池,通过
pool.insertClassPath(string);这个方法可以向池子里添加对象,但是有个问题,如果我们通过这种方式添加了池,class改变了,池里的文件仍然为原来的class文件。
并没有重新加载一次class文件,而classpool类并没有提供对应的方法。
除了一个 CtClass removeCached(String classname) ,这方法。可惜非公开的。
于是办法如下:
public class ReClassPool extends ClassPool{ @Override public CtClass removeCached(String classname) { return (CtClass)classes.remove(classname); } }
CtClass claName = null; try { // if (!classPath.endsWith(".jar")) pool.removeCached(packagePath); claName = pool.get(packagePath);
搞定!
标签:javaassist java反射
原文地址:http://blog.csdn.net/wm198966/article/details/38925261