我在循环访问类中的对象时遇到了一些问题。我在这里写了一个小小的演示,所以你可以按照下列步骤操作:循环遍历类中的对象数组
Tank tanks[] = new Tank[2];
tanks[0] = new Tank();
tanks[1] = new Tank();
tanks[0].doStuff(tanks);
doStuff(Tank[] tanks) {
for (int i = 0; i < tanks.length; i++) {
if (tanks[i].equals(this)) continue;
// Do stuff
}
}
所以,我有一个类型为Tank的数组。然后我调用Tank类中的doStuff方法。该方法获取数组并循环遍历它。然后我想为每个坦克都做些东西,而不是这个班的当前实例。我希望你能从我的代码和这个描述中理解。
的问题是,我得到的NullPointerException为if (tanks[i].equals(this))
我在做什么错在这里?
该代码无论如何都不会编译,因为你试图把一个单一值('坦克tanks' )作为一个数组。请修改您的问题以提供一个简短的*完整*程序来展示问题。 – 2013-05-08 15:45:25
你有没有重新实现equals方法?如果是,你可以展示它吗?这是我认为这个null可能来自的唯一的地方,但只有当你重新实现它并做了错误的时候。其余的都很干净。 – 2013-05-08 15:46:21
@JonSkeet你可以使用该语法来创建一个数组。这很奇怪,但他将其声明为变量名称中的数组。 – 2013-05-08 15:48:04