J'ai une affaire assez simple où je fais une mission générique de base:comment lancer du CRT en java?
final Detail detail = field.getAnnotation(Detail.class);
final String example = detail.example();
final Class<?> type = field.getType();
if (List.class.isAssignableFrom(type))
...
else if (Enum.class.isAssignableFrom(type))
setValue(contract, field, Enum.valueOf(type, example));
else if (...)
.....
mais le Enum.valueOf() est un peu difficile à appeler, dans mon cas, l'erreur est la suivante:
valueOf (java .lang.Class, java.lang.String) ne peut en java.lang.Enum appliquer à (java.lang.Class, java.lang.String)
Cela rend parfaitement logique puisque le type est Class<Object>
. Mais puisque Enum
est CRTP, je ne peux pas trouver un bon moyen de lancer le type pour rendre le compilateur heureux. Est-ce que l'utilisation du type brut Enum.valueOf((Class)type, example))
la seule réponse? Il me donne 2 avertissements au lieu d'un seul.
Quelqu'un a modifié la question 6 ans plus tard? faim de karma ne sommes-nous pas? – nraynaud