我想知道的基础是否可以存储不同的枚举(所有实现相同的接口)作为枚举中的值。
以下是我设置的示例(错误,因为如果可能的话,我无法弄清楚如何执行此操作)。
Colors.java(这是存储其他枚举的主要枚举)
public enum Colors {
WARM_COLORS(CoolColors), //Don't know what to put in here.
COOL_COLORS(WarmColors);
private Enum<? extends ColorIntf> colors; //Don't know if this is correct either
private Colors(Enum<? extends ColorIntf> colors) {
this.colors = colors;
}
public Enum<? extends ColorIntf> getColors() {
return this.colors;
}
}
ColorIntf.java(其他枚举实现的接口)
public interface ColorIntf {
/**
* @return The name of the color.
*/
public String getName();
}
WarmColors.java(我希望将其作为变量存储在Colors.java中的一个枚举,CoolColors.java基本相同但具有不同的枚举值)
public enum WarmColors implements ColorIntf{
RED("red"),
ORANGE("orange"),
YELLOW("yellow");
private String name;
private WarmColors(String name) {
this.name = name;
}
/*
* (non-Javadoc)
* @see me.crystalneth.testing.ColorIntf#getName()
*/
@Override
public String getName() {
return this.name;
}
}
这是我希望实现的行为(当然这当然不起作用):
Colors.WARM_COLORS.getColors().RED; //Allow the user to select the warm colors category, and limits them to a color only in that category.
我想要这种行为的原因是因为我正在开发一个项目/ lib,我希望它的用户只能被限制为他们选择的任何类别的某些枚举值(在这种情况下是颜色)(温暖或在这种情况下冷色调)以防止在这个例子中选择“COOL COLORS”和“ORANGE”时可能发生的错误。
感谢您的时间:)