简化为: 两节课。 X和Y。
Y延伸X。
在X中我打电话:
Y periodic;
然后在X中我调用Y的一个函数:
periodic.conditionDepreciate();
Y中的实际功能块是:
public void conditionDepreciate() {
ActionListener conditionDepreciation = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (ameba.health > 0) {
ameba.health -= 1;
}
}
};
new Timer(conditionDelayCount * 1000, conditionDepreciation).start();
}
但无论函数是什么,我都会收到来自X文件的错误:
线程“main”中的异常java.lang.NullPointerException
在X.(X.java:71)
在X.main(X.java:245)
第71行是指我打电话时:
periodic.conditionDepreciate();
有人可以帮忙解释错误吗?
编辑:
我希望X调用Y的各种函数。这些基本上都是周期性事件计时器。
我最初在X类文件中有定时器,但为了帮助提高可读性,我移动到了自己的类文件中。
我不确定这样的东西需要初始化... Y扩展X所以它应该从X得到它的所有值? (我想......)
我发布了上面的一个计时器函数 - 我是否需要告诉Y类文件ameba.health是什么?要么 ?我想我只需要查找函数和类>。>
答案 0 :(得分:5)
似乎是periodic
引用的问题,因为你从不创建对象,比如
Y periodic = new Y();
答案 1 :(得分:2)
假设periodic
的值为null。这是静态/实例字段的默认值。在通过它调用方法之前,需要为其指定非空引用。我们没有足够的信息来了解periodic
应该的价值 - 您是应该在某处创建新实例,还是使用现有实例 - 而是调用方法null引用将给出NullPointerException
...
如果您告诉我们更多关于您预期要调用的方法的实例,我们可以提供进一步的帮助。
请注意,Y
扩展X
的事实与此无关。