Enum と EnumMap をすべて含むクラスがたくさんあり、それらのクラスのスーパークラスを作成したい場合。
public interface ColorEnum {
}
class ColorMarbles extends Toy {
enum MARBLE implements ColorEnum
{ BLUE, GREEN }
EnumMap<MARBLE, String> names = new EnumMap<MARBLE, String>(MARBLE.class);
//stuff
// fields
public void populate(ArrayList<String> designer) {
int i = 0;
for(MARBLE marble : MARBLE.values()) {
marble.name = designer.get(i);
i++;
}
}
}
class ColorBalloons extends Toy {
enum BALLOON implements ColorEnum
{ YELLOW, RED }
EnumMap<BALLOON, String> names = new EnumMap<BALLOON, String>(BALLOON.class);
//stuff
// fields
public void populate(ArrayList<String> designer) {
int i = 0;
for(BALLOON balloon : BALLOON.values()) {
balloon.name = designer.get(i);
i++;
}
}
}
このような ColorEnum 型の列挙型を含む汎用 EnumMap を持つスーパークラスを作成するにはどうすればよいですか?
public abstract class Toy {
EnumMap<ColorEnum, String> names;
}
eidt: 私の例が漠然としすぎていたことに気づきました。犬はおそらく悪い例です。できればもっと明確なものに変更します。
私が持っているのは、EnumMap を生成する populate のようなメソッドを持つ一連のクラスです。名前は事前定義された順序になっています。populate をすべてのクラスで定義する代わりに、Toy スーパークラスに持ち込めるようにしたいと考えているので、新しいクラス タイプの Toy ごとにコピー アンド ペーストを繰り返す必要はありません。
うまくいけば、これは私が探しているものをもっと説明します。