我试图通过在调用方法的地方替换每个方法调用Class.forName来捕获正在加载的类(方法中的回调不是一个选项)。即
...
Class.forName(className);
...
被替换为
...
Class.forName(MyProxy.call(className));
...
我的问题是尝试使用Class.forName(String,boolean,ClassLoader)方法。我的想法是做以下事情:
Class.forName(MyProxy.call(className),booleanParameter,classLoaderParameter)
但是,我找不到办法做到这一点。使用和invokeStatic不是一个选项,因为如果类受到保护,Class.forName将无法正常工作
感谢@Holger的建议,我找到了一个解决方案,最后我的代码替换了:
...
Class.forName(className, booleanParameter, loader);
...
同
...
__callClassForName(className, booleanParameter, loader);
...
private static Class __callClassForName(String className, boolean bParameter, ClassLoader loader) {
MyProxy.call(className);
return Class.forName(className, bParameter, loader);
}