Java while循环内的开关-缺少返回语句

Java while循环内的开关-缺少返回语句,java,switch-statement,Java,Switch Statement,有很多类似的话题,但我找不到我的问题到底在哪里 CustomerDetails-抽象类 该方法从文件中读取,其中第一个字母确定客户的类型(客户详细信息的子类) 我注意到,如果在上面的注释字段中输入“returnnull;”,丢失的return语句就会消失。但我不明白为什么?我有可能的场景和默认语句,它们涵盖了所有其他情况 此外,我不能初始化CustomerDetails对象,不能为其分配子类的新对象并返回,因为它是抽象的 而且,我不能使子类的对象的名称相同,以便最终返回它 需要澄清一下。。非常感

有很多类似的话题,但我找不到我的问题到底在哪里

CustomerDetails-抽象类

该方法从文件中读取,其中第一个字母确定客户的类型(客户详细信息的子类)

我注意到,如果在上面的注释字段中输入“returnnull;”,丢失的return语句就会消失。但我不明白为什么?我有可能的场景和默认语句,它们涵盖了所有其他情况

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

而且,我不能使子类的对象的名称相同,以便最终返回它


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

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

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

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

如果您不希望发生这种情况,另一种方法是
抛出一个异常。

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


如果您不希望发生这种情况,另一种方法是
抛出一个异常。

这里似乎有3个问题。第一个问题已经得到答复。另外两个不清楚。我会让他们单独提问,更详细地说明你想做什么。这里似乎有三个问题。第一个问题已经得到答复。另外两个不清楚。我会让他们单独提问,更详细地说明你想做什么。
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;
  }