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