Que se passe-t-il lorsque vous passez une chaîne vide à un appel Java enum .valueOf?
Par exemple:
public enum Status
{
STARTED,
PROGRESS,
MESSAGE,
DONE;
}
puis
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");
}
}
Fondamentalement, je veux savoir si j'utilise une instruction switch avec l'énumération, le cas par défaut sera-t-il appelé ou obtiendrai-je une exception quelconque?
Vous devriez obtenir un IllegalArgumentException
si le nom n'est pas celui d'une énumération (ce qui ne sera pas le cas pour la chaîne vide). Ceci est généré dans les documents API pour toutes les méthodes enum valueOf
. Vous devriez obtenir un NullPointerException
pour null
. Ce n'est probablement pas une bonne idée de donner une valeur fictive à votre variable String
(ni de laisser passer la dernière case
/default
).
Je viens d'essayer votre code. Il lance un IllegalArgumentException
. Tout comme le dit la documentation.
méthode: 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**
il signalera donc ces exceptions,
Status.valueOf se comporte de la même manière que Enum.valueOf