我有一个类,其中一个数组作为实例变量/字段,该类从另一个类传递到该类中的第一个方法。 我的印象是我也应该能够从另一种方法访问它,而无需将其传递给该方法,但是当我尝试时,我得到了一个 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
的实例不同。
如果您使用相同的实例,那应该绝对没问题。 (特别是,它将存储参数的值,因此 memList
不会在不为 null 后变为 null,只是由于其他地方的更改。)
关于java - 数组作为实例变量作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11721848/