引用位置时出现空指针异常。在调试视图中,我找到了2个具有相同名称的不同变量。一个似乎是null并且有一个绿色圆圈,一个是正确的变量并且旁边有一个蓝色三角形。
为什么我的代码引用了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);
不确定要显示的其他代码。
答案 0 :(得分:1)
绿色圆圈表示公共方法
红色方块表示私人方法
黄色菱形表示受保护的方法
蓝色三角形表示默认(包可见)方法
中看到这两个图标之间的区别答案 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方法访问字段值。