Disons que j'ai une classe abstraite
public abstract class Trainer<T extends Animal>{}
J'ai des formateurs comme :
public DogTrainer extends Trainer<Dog>{}
public HorseTrainer extends Trainer<Horse>{}
Chacune de ces "formateurs" a un ensemble fixe de trucs qu'ils peuvent former l'animal pour le faire, que je voudrais utiliser les Énumérations pour. J'ai donc une interface:
public interface TrainingActions<T extends Animal>{}
et dans chacun des formateurs, j'ai un Enum qui implémente cette interface. Donc:
public DogTrainer extends Trainer<Dog>{
public enum Trainables implements TrainingActions<Dog>{
BARK, BITE, ROLLOVER, FETCH;
}
}
public HorseTrainer extends Trainer<Horse>{
public enum Trainables implements TrainingActions<Horse>{
JUMP, TROT, REARUP;
}
}
Maintenant, dans le chacun des le Formateur classes, j'aimerais une méthode de dire "trainingComplete" qui prend l'une des Enums en entrée et l'enregistre dans un ensemble. Donc
public DogTrainer extends Trainer<Dog>{
public enum Trainables implements TrainingActions<Dog>{
BARK, BITE, ROLLOVER, FETCH;
}
public Set<Trainables> completed = new HashSet<Trainables>();
public void trainingComplete(Trainables t){completed.add(t);}
}
Cependant, au lieu de définir la 'terminé' dans chacune des Formateurs et le "trainingComplete' méthode dans chacun des formateurs, j'aimerais quelque chose dans le parent " Formateurs de la classe Enum type forcée... Donc c'est un mélange étrange de les Énumérations et les génériques.
Est-ce possible?