【问题标题】:switch inside while loop - missing return statement在 while 循环内切换 - 缺少返回语句
【发布时间】:2015-03-27 17:23:48
【问题描述】:

有很多类似的话题,但我找不到确切的问题所在..

CustomerDetails - 抽象类

该方法从文件中读取,其中第一个字母确定客户的类型(它们是 CustomerDetails 的子类)。

public static CustomerDetails readCustomerData(....)

   try
   {
        while(...hasNextLine())  
        {
            ..... 
            .....
            switch(firstLetter)
            {
                case 'A':  ....
                           PrivateCustomerDetails aaa = new PrivateCustomerDetails(...   inherited fields + some extra ones)
                          return aaa;

                case 'B': ...  BusinessCustomerDetails bbb = .....
                          return bbb;

                default:  return null;
             }
        }
        // possibly return something here..
  }
  catch(Exception e)
  {
      ...
      return null;
  }

我注意到如果我输入“return null;”在上面的评论字段中,缺少的 return 语句消失了。但我不明白为什么?我有可能的场景以及涵盖所有其他情况的默认语句。

此外,我无法初始化 CustomerDetails 对象,为其分配新的子类对象并返回,因为它是抽象的..

另外,我不能使子类的对象的名称相同以最终返回它..

需要澄清一下。非常感谢!

【问题讨论】:

  • 这里好像有3个问题。第一个已经回答了。其他2个不清楚。我会让它们分开问题,并详细说明您要做什么。

标签: java switch-statement


【解决方案1】:

如果hasNextLine() 在您第一次调用它时返回 false 怎么办?在这种情况下会返回什么?你需要一个return 语句来处理这种可能性。

如果您不希望发生这种情况,另一种方法是 throw 例外。

【讨论】:

    【解决方案2】:

    因为可能永远不会执行 while 循环。在这种情况下,您必须返回一个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      • 2014-05-28
      相关资源
      最近更新 更多