【发布时间】:2012-07-30 12:44:12
【问题描述】:
我有一个带有数组作为实例变量/字段的类,它从另一个类传递到这个类中的第一个方法。 我的印象是,我也应该能够从另一个方法访问它,而无需将其传递给该方法,但是当我尝试时,我得到了一个 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();
【问题讨论】:
-
你是在
memPass之前打电话给accessArray吗? (或者在不同的物体上?) -
您已将其简化到代码不会显示问题的程度。只要您在同一个对象上调用这两种方法,这段代码就可以完美运行。如果你在不同的对象上调用它们,那么,那就是另一回事了。
-
memPass 先被调用,然后我点击GUI上的一个按钮调用accessArray。
-
这个方法怎么会被静态调用??
-
你确定是同一个对象吗?
标签: java arrays nullpointerexception parameter-passing