我有以下示例情况:
public void shouldReturnStringForEnum() {
MessageType myType = getType();
System.out.println(getMessageForType(myType));
}
String getMessageForType(MessageType myType) {
switch(myType) {
case error:
return "Error type";
case warning:
return "Warning type";
case info:
return "Info type";
}
} // <= error: missing return statement
MessageType getType() {
Random random = new Random();
return MessageType.values()[random.nextInt(3)];
}
enum MessageType {error, warning, info }
我无法弄清楚getMessageForType从switch语句主体以外的其他方式从方法返回的可能性。我在想:
从 I/O 数据反序列化 - 但java.lang.IllegalArgumentException: No enum constant在调用之前很久就发生了getMessageForType
可能的 null 方法参数 - 但它会在switch(myType)评估时失败java.lang.NullPointerException
在这种情况下,强制使用默认的 return 语句是不舒服的,因为我不知道在这里返回什么。在这种情况下抛出异常在这里也没有意义。这种行为背后的设计决策是什么?
请帮忙,我在这里错过了什么?
白猪掌柜的
繁星点点滴滴
慕码人2483693
相关分类