考虑以下代码
public class ColorScheme {
public static final int DARK_BLACK = 0,
WHITE = 1;
private int Scheme;
public ColorScheme() {
this.Scheme = DARK_BLACK;
}
public ColorScheme(int SchemeType) {
this.Scheme = SchemeType;
}
}
我希望构造函数ColorScheme(int SchemeType)
的参数仅限于static final int
- DARK_BLACK
或WHITE
或我可能定义的其他常量之一。
对于Ex:当有人实例化ColorScheme
类时,他可以使用
ColorScheme CS = new ColorScheme(DARK_BLACK);
而
ColorScheme CS = new ColorScheme(5); //or any other non-defined constant
应该返回错误。
答案 0 :(得分:2)
您正在寻找Java enums。
答案 1 :(得分:1)
答案 2 :(得分:1)
Enum是要走的路:
public class ColorScheme {
public enum Color {DARK_BLACK,
WHITE}
private Color Scheme;
public ColorScheme() {
this.Scheme = Color.DARK_BLACK;
}
public ColorScheme(Color SchemeType) {
this.Scheme = SchemeType;
}
}
答案 3 :(得分:0)
正如马特和肯特已经指出的那样:enum是要走的路。
枚举非常强大,因为它们提供了许多关于类的概念,例如:方法和构造函数。来自枚举作者Josh Bloch的Effective Java中的相应章节绝对值得一读,因为它们描述了许多优点,缺点以及一些用例,例如: EnumMaps和EnumSets。