如果方法以前没有被赋值给中间变量,那么有没有办法使用eclipse调试器更改/定义方法返回的值?
例如,我有一些调用java.lang.Class.classForName的第三方封闭源代码,如下所示
public static Class<?> forName(String className)
throws ClassNotFoundException {
return forName0(className, true, ClassLoader.getCallerClassLoader());
}ClassLoader.getCallerClassLoader()获得的类加载器无法加载类,所以我想试试Thread.currentThread().contextClassLoader是否更幸运。所以实际上,我想要这样的东西:
public static Class<?> forName(String className)
throws ClassNotFoundException {
return forName0(className, true, Thread.currentThread().contextClassLoader);
}这是不是有可能呢?请注意,forName0是一个本机方法。
发布于 2012-10-12 00:41:18
您可以使用AspectJ的运行时编织来围绕ClassLoader.getCallerClassLoader()应用您自己的自定义方面来替换返回值。
您也可以尝试使用Bugdel。
发布于 2012-10-11 23:42:45
What purpose does Class.forName() serve if you don't use the return value?
单步执行静态方法,看看是否可以对其进行调整。它可能正在加载静态内容
https://stackoverflow.com/questions/12843093
复制相似问题