出于调试目的,我需要更改私有字段的值。 我使用Eclipse进行调试,并且我能够在调试过程中更改变量,但是我无法访问私有变量。我尝试在更改值视图中使用反射来手动将字段设置为“可访问”,但看起来它不起作用。 你知道任何IDE /框架/插件还是可以允许它的东西吗?
答案 0 :(得分:3)
在Eclipse中,您可以转到变量视图,其中列出了所有变量。
您可以在此处右键单击要更改的成员变量,然后选择更改值选项,该选项会弹出一个单独的窗口来更改值。这将从那时开始生效。
答案 1 :(得分:1)
Yuo可以使用反射来设置字段值(Spring提供方便的ReflectionTestUtil
):
Class<?> c = foo.getClass();
Field field = c.getDeclaredField("valid");
field.setAccessible(true);
field.set(valid, Boolean.FALSE);
在调试器中设置私有字段的值也不应该有任何问题,它是否是私有的并不重要。
答案 2 :(得分:1)
刚用eclipse测试 - 没问题。测试应用程序是这样的:
public class DebugTest {
private static int i = 5;
public static void main(String[] args) {
System.out.println(args.length); // dummy line to set a breakpoint
System.out.println(i);
}
}
我在虚拟线上设置了BP,启动了调试器,然后我将Variables视图中i
的值从5更改为6,继续,输出为6。
只有一件事:也许,你不能在你的变量视图中看到私有变量。打开视图菜单(带有三角形的按钮),选择 Java 并打开缺少的项目。默认情况下禁用静态常量 - 这可能是你的问题。
答案 3 :(得分:-2)
由于您将变量声明为私有,并且您希望在调试级别修改该值,因此任何IDE /插件都不会发生这种情况。每个IDE都将遵循基本原则。