0

简化:两个类。X 和 Y。

Y 扩展 X。

在 XI 通话中:

    Y periodic;

然后在 XI 中调用 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 文件中得到一个错误消息:


在 X.(X.java:71)
在 X.main(X.java:245)的线程“主”java.lang.NullPointerException中的异常

第 71 行指的是我打电话时:

periodic.conditionDepreciate();

有人可以帮助解释错误吗?

编辑:

我希望 X 调用 Y 的各种函数。基本上,它们都是周期性事件计时器。

我最初在 X 类文件中有计时器,但为了提高可读性,我移到了它自己的类文件中。

我不确定需要用什么来初始化这样的东西... Y 扩展 X 所以它应该从 X 中获取所有值?(我认为...)

我在上面发布了一个计时器功能——我需要告诉 Y 类文件 ameba.health 是什么吗?或者 ?我想我只需要查找函数和类 >.>

4

2 回答 2

5

似乎是periodic引用的问题,因为您从不创建对象,例如

Y periodic = new Y();
于 2012-05-12T17:56:27.597 回答
2

大概的值为periodic空。这是静态/实例字段的默认设置。您需要先为其分配一个非空引用,然后才能通过它调用方法。我们没有足够的信息来说明 的值periodic 应该是什么——你是应该在某处创建一个新实例,还是使用现有的实例——但是在空引用上调用一个方法会给出一个NullPointerException...

如果您告诉我们更多有关您希望调用该方法的实例的信息,我们可能会提供进一步的帮助。

请注意,Y扩展的事实X在这里无关紧要。

于 2012-05-12T17:55:33.077 回答