Java Génériques Question: paramètre de type E n'est pas dans les limites

j'ai une question à propos de génériques. J'ai cette méthode qui ne compile pas. Le compilateur me dit: type parameter E is not within its bound. J'ai généralement pas de problème dans la compréhension des erreurs de compilation, mais celui-ci est assez délicat. Peut-être que mes connaissances sur les génériques besoin de s'améliorer. 🙂 Quelqu'un peut-il me dire ce qui est mal?

public static <E extends Enum & StringConvertableEnum<E>> Map<String, E> map(Class<E> enumClass) {
    Map<String, E> mapping = new HashMap<String, E>();

    EnumSet<E> set = EnumSet.allOf(enumClass);

    for(E enumConstant : set) {
        mapping.put(enumConstant.getStringValue(), enumConstant);
    }

    return mapping;
}

C'est la définition de StringConvertableEnum:

public interface StringConvertableEnum<E extends Enum> {
    public E getEnumFromStringValue(String string);
    public String getStringValue();
}
numéro de ligne on se plaindre?
EnumSet<E> set = EnumSet.allOf(enumClass); est la ligne.
Je suis hors de ma profondeur. Votre code semble plausible pour moi.
par ailleurs, pourquoi auriez-vous besoin pour générer une telle carte? vous savez que chaque enum class a un .valueOf() méthode statique qui permet d'obtenir l'enum de sa chaîne, non?

OriginalL'auteur Kraushauslaus | 2011-01-23