返回空arraylist而不是null

时间:2015-10-29 22:15:55

标签: java

我需要调整此方法以返回空的""而不是null,因为我应该使用一个类来测试它并获得NullPointerException。如何更改此选项以返回""而不是null

/**
 * Return the specified number of mail items for a user or
 * null if there are none.
 * @param who The user requesting their next item.
 * @param howMany The number of mail items requested.
 * @return The user's specified number of next items.
 */
public ArrayList<MailItem> getNextMailItems(String who, int howMany)
{
    ArrayList<MailItem> itemsToReturn = new ArrayList<MailItem>();
    if(who != null)
    {
        who = formatName(who);
    }
    ArrayList<MailItem> mails = items.get((who));
    Iterator<MailItem> it = mails.iterator();
    while(it.hasNext() && howMany > 0)
    {
        MailItem item = it.next();
        it.remove();
        itemsToReturn.add(item);
        howMany--;
        return itemsToReturn;
    }
    return null;
}

2 个答案:

答案 0 :(得分:7)

我总是会返回一个空列表而不是null:

这个怎么样 - 我认为while循环内部的返回是一个错误。在您的方法开始时,您将创建一个空列表 - 所以为什么不在每种情况下都返回它。

public ArrayList<MailItem> getNextMailItems(String who, int howMany)
{
    ArrayList<MailItem> itemsToReturn = new ArrayList<MailItem>();
    if(who != null)
    {
        who = formatName(who);
    }
    ArrayList<MailItem> mails = items.get((who));
    Iterator<MailItem> it = mails.iterator();
    while(it.hasNext() && howMany > 0)
    {
        MailItem item = it.next();
        it.remove();
        itemsToReturn.add(item);
        howMany--;
    }
    return itemsToReturn;
}

如果ArrayList<MailItem> mails = items.get((who));返回null,则以下行返回Nullpointer - Iterator<MailItem> it = mails.iterator(); - 所以你应该在获取迭代器之前检查null。

答案 1 :(得分:0)

只需使用ArrayList构造函数:

return new ArrayList<MailItem>();