比方說,我有一個抽象父馴獸師類:強迫孩子使用定義枚舉內自己
public abstract class Trainer
<A extends Animal,
E extends Enum<E> & Trainables>{
protected EnumSet<E> completed;
public void trainingComplete(E trainable){
trainingComplete.add(trainable);
}
我希望父馴獸師的具體擴展來完成訓練只能由它定義的trainables 。所以,如果我有一個具體的馴狗師如下:
public class DogTrainer extends Trainer<Dog, DogTrainer.Tricks>{
public enum Tricks implements Trainables {
FETCH, GROWL, SIT, HEEL;
}
}
隨着DogTrainer
目前的定義,我只能爲DogTrainer.Tricks
類型的參數做trainingComplete
。但我想強制任何人創建一個具體的Trainer
應該允許trainingComplete()
爲Trainables
它自己定義。
換句話說,我目前的設計問題,如果我有另外的教練如下:
public class PoliceDogTrainer extends Trainer<Dog, PoliceDogTrainer.Tricks>{
public enum Tricks implements Trainables {
FIND_DRUGS, FIND_BOMB, FIND_BODY;
}
}
沒有什麼阻止他人定義,試圖教狗,警察花樣另一個胭脂教練:
public class RougeTrainer extends Trainer<Dog, PoliceDogTrainer.Tricks>{
...
}
我想禁止這個,並允許擴展類只使用他們自己指定的Trainables。
我該怎麼做?
我認爲這也解決了我的: [早期問題](http://stackoverflow.com/questions/19435006/force-children-to-use-enums-defined-within-the自己)。 – anishthecoder