如何处理参数与返回值紧密相关的方法。如果参数为null怎么办? Java的

时间:2013-12-11 11:07:04

标签: java return

我正在编写一个方法,该方法应返回属于某个用户的数组中的第一项。该课程如下:

 public MailItem getNextMailItem(String who)
 {

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

 }

如果“who”参数为空或无效,我需要某种错误处理,例如

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

但如果结果是假的呢?

3 个答案:

答案 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 OptionalNull 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的有效实例。