考虑以下枚举:
public enum AllColors {
WHITE,
RED,
GRAY,
GREEN,
BLUE,
BLACK
}
public enum GrayscaleColors {
WHITE,
GREY,
BLACK
}
枚举之间存在差异(GRAY / GREY)-但是在编译时无法捕捉这种错字。如果系统使用数据库存储或消息传递,并且必须根据枚举值在枚举值之间进行转换,则会造成麻烦。
我希望我可以做这样的事情:
public enum GrayscaleColors {
AllColors.WHITE,
AllColors.GRAY,
AllColors.BLACK
}
但这似乎不可能。
答案 0 :(得分:3)
您可以声明一个构造函数,并在该构造函数中比较名称:
Runtime.getRuntime().exec("tsc /path/to/script.ts");
或者,您可以简单地使用public enum GrayscaleColors {
WHITE(AllColors.WHITE),
GREY(AllColors.GRAY),
BLACK(AllColors.BLACK);
GrayscaleColors(AllColors ac) {
if (!name().equals(ac.name()) throw new IllegalArgumentException();
}
}
:
AllColors.valueOf
或者,当然,您可以编写单元测试来检查名称是否匹配。