【发布时间】:2012-07-27 19:08:42
【问题描述】:
我有一个方法,它把一个数组作为另一个类的参数:
public void memPass(Memory[] memLocList) {
memList = memLocList;
for (int i = 0; i < 10; i++) {
System.out.println(memList[i].getSomething());
}
}
-编辑- 上面打印出 10 个值(整数),但如果我在其他方法中尝试相同的方法,整数介于 0 和 10 之间,我会得到 NPE。
谁能告诉我如何从另一个方法访问这个数组的元素,该方法也接受另一个类的参数?
我正在尝试按照以下方式做一些事情:
public void accessArray(int mem) {
int someInt = memList[mem].getSomething();
}
-EDIT- 抱歉,我应该补充一点,这会产生 NullPointerException。
-新编辑-
好的,我现在已经编辑了代码,所以我在课堂上的所有内容是:
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(int mem) {
System.out.println(memList.length);
}
}
第一种方法打印一个表示“memList”长度的整数,第二种方法给出一个 NPE。
【问题讨论】:
-
你得到的东西看起来很合理。 SSCCE 怎么样?
memPass()真的被调用了吗?传递了memLocList的什么值?您是否尝试过使用调试器来确定 what 为空? -
memPass() 和 accessArray() 方法是同一个类吗? memList 是该类的成员变量吗?如果两者都是,则您已经在此处编写的代码按原样运行。
-
查看您的问题标签
nullpointerexception这意味着在memList的mem索引处有null值,您正尝试使用getSomething()。或者memList为空(这与之前方法中的memList不同) -
@nkr 那将是
AIOOBE,而不是NPE。 -
嗨,DGH,这两种方法都在同一个类中。 memList 是该类的实例变量。我猜似乎还有其他问题。
标签: java arrays nullpointerexception parameter-passing