空の文字列をJava enum .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");
}
}
基本的に、enumでswitchステートメントを使用しているかどうかを知りたいのですが、デフォルトのケースが呼び出されますか、それとも何らかの例外が発生しますか?
名前が列挙型(空の文字列ではない)の名前でない場合は、IllegalArgumentException
を取得する必要があります。これは、すべての列挙valueOf
メソッドのAPIドキュメントで生成されます。 NullPointerException
のnull
を取得する必要があります。 String
変数にダミーの値を与えることはおそらくお勧めできません(最後のcase
/default
を通過させることもできません)。
私はあなたのコードを試しました。 IllegalArgumentException
をスローします。ドキュメントが言うように。
メソッド:valueOf
Returns the enum constant of the specified enum type with the specified name. The name must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
Parameters:
enumType - the Class object of the enum type from which to return a constant
name - the name of the constant to return
Returns:
the enum constant of the specified enum type with the specified name
Throws:
IllegalArgumentException - if the specified enum type has no constant with the specified name, or **the specified class object does not represent an enum type**
NullPointerException - if **enumType or name is null**
これらの例外にフラグを立てます
Status.valueOfは Enum.valueOf と同じように動作します