2015-10-29 6 views
-2

Мне нужно настроить этот метод, чтобы вернуть пустой «» вместо null, потому что я должен использовать класс для его проверки, и я получаю NullPointerException. Как мне изменить это, чтобы вернуть «» вместо null?Вернуть пустой arraylist вместо 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

возвращение новый ArrayList <>(); Чтобы избежать NPE, вам нужен новый пустой список? Вы уверены, что это ваше дело? – kosa

+0

Что сказал @Nambari, и у меня есть дополнительный вопрос. Этот метод когда-либо возвращает список 'MailItem', который содержит более 1 элемента внутри? – Nikola

+0

@Nikola да это –

ответ

6

Я всегда возвращаю пустой список вместо нуля:

Что об этом - я думаю, что возвращение в цикле в то время как это ошибка. И в начале вашего метода вы создаете пустой список - так почему бы не вернуть его в каждом случае.

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)); возвращает нулевое значение следующая строка возвращает NullPointer - Iterator<MailItem> it = mails.iterator(); - Таким образом, вы должны проверить нуль перед тем, как итератор.

0

просто использовать ArrayList конструктор:

return new ArrayList<MailItem>(); 
Смежные вопросы