我需要调整此方法以返回空的""而不是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;
}
答案 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>();