2013-12-11 28 views
0

我正在写一个方法,应该返回属于某个用户的数组中的第一个项目。这个类看起来是这样的:如何处理参数与返回值紧密连接的方法。如果参数为空,该怎么办? Java

public MailItem getNextMailItem(String who) 
{ 

     return mailbox.get(who).pollFirst(); 

} 

我需要某种错误在办案的“谁” - 参数为空或空e.g

if (who != null && who.length() != 0) 

但是,如果这是什么原来是假的呢?

+1

这取决于您的要求。最常见的策略是返回null作为MailItem或抛出异常。 – jpvee

+0

当然!在我困惑的脑海里,我认为返回null会给我一个错误。谢谢! – xsiand

回答

0

返回NULL在没有价值的将是一个明显的解决方案:

public MailItem getNextMailItem(String who){ 
    MailItem mailItem = null; 
    if (who != null && who.length() != 0){ 
     mailItem = mailbox.get(who).pollFirst(); 
    } 
    return mailItem; 
} 

但想一想:

如果用空沟通,你的回报价值真的是ambiguous。这可能意味着很多事情。相反,您可以使用Guava's OptionalNull object pattern

使用空模式,你会定义一个拥有中性的行为,可能在你的MailItem接口的实例,并在没有值的情况下返回它:

public MailItem getNextMailItem(String who) { 
    MailItem mailItem = null; 
     if (who != null && who.length() != 0){ 
     mailbox.get(who).pollFirst(); 
     } else { 
     mailItem = MailItem.NULL_ITEM; 
     } 
    return mailItem; 
} 

这样 - 除非意外的异常发生 - 您可以始终确保getNextMailItem返回MailItem的有效实例。

0

简单的解决方案是返回null。另一方面,检查null并相应地处理。

1

你如果块是类似的东西

public MailItem getNextMailItem(String who) { 
MailItem item = null; 
if (who != null && who.length() != 0) { 
    item = mailbox.get(who).pollFirst(); 
} else { 
    //show some error message or error log here 
} 
return item; 
} 

上filure你的方法将返回null。

也看过这个Q&A

相关问题