我有一个带有数组的类作为实例变量/字段,该数组从另一个类传递到该实例中的第一个方法。
我的印象是,我也应该能够从另一种方法访问它,而不必也将其传递给该方法,但是当我尝试时,我得到了NPE。

这是代码:

public class PLoop {

    // instance variable
    public Memory[] memList;

    // method 1
    public void memPass(Memory[] memLocList) {

        memList = memLocList;
        System.out.println(memList.length);
    }

    // method 2
    public void accessArray() {

        System.out.println(memList.length);
    }
}


当第一个方法被调用时,我得到一个打印到控制台的整数,表示数组的长度,但是当第二个方法被调用时,它是NPE,表明不是同一数组。

通过单击GUI上的按钮可以调用第二种方法。与此按钮关联的方法只能通过以下方式进行调用:

PLoop.accessArray();


谁能告诉我我在做什么错?

-编辑-
对这些方法的调用来自两个不同的类,每个类都声明一个PLoop实例:

proc = new PLoop();

最佳答案

PLoop类中的方法不是静态的
仍然您在呼叫PLoop.accessArray();

你能告诉我真正的情况是什么吗?

就像@Jon Skeet告诉代码似乎很好,唯一的可能是
不按顺序执行它们,否则您可能会在第一个之后弄乱memLocList
方法被调用。

10-07 23:04