[英]Java equals method regarding null in array
在下面的代碼片段中,我被告知,在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;
}
首先,您應該將item強制轉換為該class所在的類。 您正在比較原始對象。 因此,如果您的班級是Item.class
if (item instanceof Item)
{
Item i = (Item)item; //where item is the object passed to the method.
}
同樣,如果item [i]為null,則不能在其上使用equals
方法。 嘗試執行null檢查,然后使用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;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.