当您将空的 String
(或其他一些无法识别的值,或 null
)传递给 Java 枚举 .valueOf
时会产生什么结果?
例如:
public enum Status
{
STARTED,
PROGRESS,
MESSAGE,
DONE;
}
接着
String empty = "";
switch(Status.valueOf(empty))
{
case STARTED:
case PROGRESS:
case MESSAGE:
case DONE:
{
System.out.println("is valid status");
break;
}
default:
{
System.out.println("is not valid");
}
}
基本上,我想知道如果我在枚举中使用 switch 语句,会调用 default case 还是会出现某种异常?
原文由 Jay R. 发布,翻译遵循 CC BY-SA 4.0 许可协议
你应该得到一个
IllegalArgumentException
如果名称不是枚举的名称(它不会用于空字符串)。这是在所有枚举valueOf
方法的 API 文档中生成的。你应该得到一个NullPointerException
对于null
。给你的String
变量一个虚拟值可能不是一个好主意(也不允许最后一个case
/default
)。