将无效字符串传递给 Java 枚举 .valueOf 调用时,会产生什么结果?

2022-09-01 03:02:00

将空值(或其他一些无法识别的值,或 a)传递给 Java 枚举调用时,会产生什么结果?Stringnull.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语句,是否会调用默认情况或是否会获得某种异常?


答案 1

如果名称不是枚举的名称(对于空字符串,则不应如此),则应该得到一个枚举。这是在所有枚举方法的 API 文档中生成的。你应该得到一个 for .为变量提供虚拟值可能不是一个好主意(也不允许最后一个 /掉落)。IllegalArgumentExceptionvalueOfNullPointerExceptionnullStringcasedefault


答案 2

我刚刚尝试了你的代码。它会抛出一个 .就像文档说的。IllegalArgumentException