在Eclipse中调试具有相同名称的多个变量

时间:2013-12-12 20:43:44

标签: java eclipse debugging processing

引用位置时出现空指针异常。在调试视图中,我找到了2个具有相同名称的不同变量。一个似乎是null并且有一个绿色圆圈,一个是正确的变量并且旁边有一个蓝色三角形。

The View of my Debugger

为什么我的代码引用了null变量,为什么在内存中会有2个该变量的副本?

该位置在此处的构造函数中设置

public Obstacle(int x, int y) {
  position = new PVector(x,y);

}

构造函数从此处的级别生成器类中调用

obstacle1 = new Obstacle(levelWidth/4, 375);
obstacle2 = new Obstacle(levelWidth/2, 375);
obstacle3 = new Obstacle(levelWidth*3/4, 375);

不确定要显示的其他代码。

2 个答案:

答案 0 :(得分:1)

绿色圆圈表示公共方法

红色方块表示私人方法

黄色菱形表示受保护的方法

蓝色三角形表示默认(包可见)方法

您可以在What do the icons for methods in Eclipse mean?

中看到这两个图标之间的区别

答案 1 :(得分:1)

问题是你在超类和子类中都有字段point。您很可能正确设置了超类的字段,但“忘记”设置子类的字段。请考虑以下示例:

class Super {
    Boolean exist;
}

class Sub extends Super {
    Boolean exist;
    Sub() {
        super.exist = true;
    }
}

执行以下代码::

Sub sub = new Sub();
System.out.println(sub.exist);
将打印

null ,因为exist的{​​{1}}字段尚未启动。

为防止将来出现此类错误,请不要在子类中使用重复字段,并使用getter方法访问字段值。