在下面的代码片段中,我被告知在if语句中,this.item [i]和item的位置无法交换,因为item [i]数组中可能有null。我不明白为什么......
我被告知的作品:if(this.item [i] .equals(item)) 我被告知无法工作:if(item.equals(this.item [i]))
public boolean contains(Object item){
for(int i = 0; i < this.numItems; i ++)
if(this.item[i].equals(item))
return true;
}
return false;
}
答案 0 :(得分:0)
首先,您应该将项目强制转换为该项目所在的类。您正在比较原始对象。所以如果你的类是Item.class
if (item instanceof Item)
{
Item i = (Item)item; //where item is the object passed to the method.
}
如果item [i]为null,则无法使用equals
方法。尝试进行空检查,然后使用equals
,如下所示:
if (item != null && item instanceof Item)
{
for (int i = 0; i < item.length; i++)
{
Item castedItem = (Item)item;
if (item[i] != null && item[i] instanceof Item && item[i].equals(castItem))
{
return true;
}
else
{
return false;
}
}
}