Voici un utilitaire astucieux que j'utilise :
/**
* A common method for all enums since they can't have another base class
* @param <T> Enum type
* @param c enum type. All enums must be all caps.
* @param string case insensitive
* @return corresponding enum, or null
*/
public static <T extends Enum<T>> T getEnumFromString(Class<T> c, String string)
{
if( c != null && string != null )
{
try
{
return Enum.valueOf(c, string.trim().toUpperCase());
}
catch(IllegalArgumentException ex)
{
}
}
return null;
}
Ensuite, dans ma classe d'enum, j'ai généralement ceci pour économiser de la saisie :
public static MyEnum fromString(String name)
{
return getEnumFromString(MyEnum.class, name);
}
Si vos enums ne sont pas en majuscules, il suffit de modifier la ligne Enum.valueOf.
Dommage que je ne puisse pas utiliser T.class pour Enum.valueOf car T est effacé.