替换 ASM 中的 Class.forName 方法调用(内联)

Replacing Class.forName method call in ASM (inline)

我试图通过在调用方法的地方将每个方法调用替换为 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);
}