特定枚举类型的“集”,但具有泛型
假设我有一个抽象类
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);}
}
但是,与其在每个特定训练器中定义“已完成”集,在每个训练器中定义“训练完成”方法,不如在父“训练器”类中定义一些可以强制执行枚举类型的内容...所以这是枚举和泛型的奇怪组合。
这可能吗?