另一个枚举中的不同枚举?

时间:2016-01-27 21:43:58

标签: java enums

我想知道的基础是否可以存储不同的枚举(所有实现相同的接口)作为枚举中的值。

以下是我设置的示例(错误,因为如果可能的话,我无法弄清楚如何执行此操作)。

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”时可能发生的错误。

感谢您的时间:)

0 个答案:

没有答案