在 while 循环内切换 - 缺少 return 语句
switch inside while loop - missing return statement
类似的话题有很多,但我找不到我的问题所在..
CustomerDetails - 摘要 class
该方法从文件中读取,其中第一个字母确定客户的类型(是 CustomerDetails 的 class 子类型)。
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 对象,将新的子 class 对象分配给它和 return,因为它是抽象的..
另外,我没法让sub-class的对象的名字最终和return一样..
需要一些说明..非常感谢!
因为while循环有可能永远不会执行。在这种情况下,您必须 return 一个值。
如果您第一次调用它时 hasNextLine()
returns false 怎么办?在那种情况下会返回什么?您需要一个 return
语句来处理这种可能性。
如果您不希望发生这种情况,另一种方法是 throw
例外。
类似的话题有很多,但我找不到我的问题所在..
CustomerDetails - 摘要 class
该方法从文件中读取,其中第一个字母确定客户的类型(是 CustomerDetails 的 class 子类型)。
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 对象,将新的子 class 对象分配给它和 return,因为它是抽象的..
另外,我没法让sub-class的对象的名字最终和return一样..
需要一些说明..非常感谢!
因为while循环有可能永远不会执行。在这种情况下,您必须 return 一个值。
如果您第一次调用它时 hasNextLine()
returns false 怎么办?在那种情况下会返回什么?您需要一个 return
语句来处理这种可能性。
如果您不希望发生这种情况,另一种方法是 throw
例外。