J'ai une classe générique qui représente un fragment de texte. Ce fragment de texte peut avoir un nombre de modes différents (différents types de mise en évidence). Ces modes sont représentés par un Enum. L'Enum pourrait être différent pour chaque projet mais il doit implémenter une interface qui fournit une méthode pour en combiner 2 (pourrait être surlignée et en gras). Donc, j'ai une interface:Génériques Java de génériques de
public interface TextFragmentMode<E extends Enum<E>> {
/**
* Will combine the supplied mode with the current mode and return the
* result.
*
* @param mode The mode to combine with.
* @return The combined mode.
*/
public E combine(E mode);
}
Alors mon TextFragment est un conteneur pour les deux une chaîne de texte et un mode. Mais quand j'essaie de déclarer la classe:
public class TextFragment<E extends TextFragmentMode<E extends Enum<E>>> {
StringBuilder text;
E mode;
...
Je reçois l'erreur suivante:
Syntax error on token "extends", , expected
qui, selon éclipser la coloration syntaxique, fait référence à la partie
E extends Enum<E>
de le code. Est-ce que quelqu'un sait ce que je fais mal? Je dois manquer quelque chose sur les génériques ...
--------------------- modifier -------------- Je prends enfin le temps de lire Effective Java de Josh Bloch (deuxième édition), et il s'avère que cet exemple d'utilisation est Item 34: Emulate enums extensible avec les interfaces. Autant que je voudrais dire que le grand esprit pense de même ... Ce serait trop présomptueux!
Thx je luttais si dur avec P :) –
Snicolas