【发布时间】:2016-05-01 00:00:12
【问题描述】:
每当我尝试访问我的阵列时,我都会收到 NPE。即使调用 .length 属性也会给我一个 NPE。任何帮助,将不胜感激。这是我的构造函数和一直失败的方法。
public SkierList() {
Skier[] skiers= new Skier[INITIAL_CAP];
for (int i = 0; i < skiers.length; i++){
skiers[i] = new Skier("");
}
int count = 0;
}
public void add(Skier newSkier) {
if (this.size() < skiers.length)
{
skiers[count] = new Skier(newSkier.getName(), newSkier.getLevel());
count++;
}
}
代码编译但在skiers.length处抛出NPE
【问题讨论】:
-
为什么将 Skier 定义为数组和对象?没有意义
-
你应该将你的数组定义为一个全局数组,并确保你没有在你的数组之后命名对象
-
查找变量阴影,因为这正是您正在做的。您可能已经获得了一个未向我们展示的滑雪者字段(否则代码将无法编译),但您通过在构造函数中重新声明它来隐藏它。不要那样做。
标签: java arrays nullpointerexception