Je ne suis pas convaincu à 100% que c'est une bonne idée, mais je suis tombé sur un code aujourd'hui qui est actuellement mis en œuvre comme:
class MyWidget <T extends Enum<T> > {
MyWidget(Map<T, Integer> valueMap) {
mValueMap = valueMap;
}
Map<T, Integer> mValueMap;
}
où MyWidget
puis propose des méthodes qui utilisent des mValueMap
pour convertir le passé- Enum
d'une Integer
.
Ce que j'envisage de le faire était d'essayer de revoir ce, de sorte que je devais déclarer mes énumération:
interface MyInterface {
public Integer getValue();
}
enum MyEnum implements MyInterface {
foo, bar;
public Integer getValue() {
return ordinal();
}
}
Et je ne puis être en mesure de réécrire MyWidget
dans quelque chose qui ressemblait vaguement comme ceci:
public class MyWidget<T extends Enum<T> extends MyInterface> {
...
}
et serait alors en mesure d'appeler l' getValue()
méthode de MyInterface
sur T
-type des objets au sein d' MyWidget
. Le problème, bien sûr, est que "<T extends Enum<T> extends MyInterface>
" n'est pas valide la syntaxe. Est-il possible d'en sortir?
Je ne veux pas juste MyWidget<T extends MyInterface>
, parce que c'est aussi important que T être une énumération.
Merci à l'avance!