比方说,我有一个抽象类特定枚举类型,但与仿制药
public abstract class Trainer<T extends Animal>{}
我有这样具体的培训师:
public DogTrainer extends Trainer<Dog>{}
public HorseTrainer extends Trainer<Horse>{}
每个“教员”的有一组他们可以训练动物做的固定技巧,我想用Enums来做。所以我有一个接口:
public interface TrainingActions<T extends Animal>{}
和在每个培训师,我有一个枚举,实现此接口。所以:
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;
}
}
现在在每个训练课,我想一个方法说“trainingComplete”,是以枚举的一个作为输入,并将其保存到一组。所以
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);}
}
然而,不是定义“完成”在每一个具体的培训师,并在每个培训人员的“trainingComplete”方法的设置,我想在父东西“教练”类,可以被Enum类型强制执行......因此这是Enums和泛型的奇怪组合。
这可能吗?
在每个声明,'枚举'应该是'enum'。 –
ahh yes =)thanx!更新 – anishthecoder
显示Animal的定义 – Bohemian