我正在编写一个方法,该方法应返回属于某个用户的数组中的第一项。该课程如下:
public MailItem getNextMailItem(String who)
{
return mailbox.get(who).pollFirst();
}
如果“who”参数为空或无效,我需要某种错误处理,例如
if (who != null && who.length() != 0)
但如果结果是假的呢?
答案 0 :(得分:1)
你的if块是那样的
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
答案 1 :(得分:0)
简单的解决方案是返回null。另一方面,检查null并相应地处理。
答案 2 :(得分:0)
在没有值的情况下返回null将是一个明显的解决方案:
public MailItem getNextMailItem(String who){
MailItem mailItem = null;
if (who != null && who.length() != 0){
mailItem = mailbox.get(who).pollFirst();
}
return mailItem;
}
但请考虑一下:
如果您与null通信,则返回值实际为ambiguous。它可能意味着很多事情。相反,您可以使用Guava's Optional或Null object pattern。
使用Null模式,您可以定义一个具有中性行为的实例,可能在您的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
的有效实例。