Java等于关于数组中null的方法

时间:2015-07-18 21:40:17

标签: java arrays null equals

在下面的代码片段中,我被告知在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; 
}

1 个答案:

答案 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;
        }
    }
}