限制某些已定义常量的参数

时间:2011-09-25 10:39:01

标签: java

考虑以下代码

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_BLACKWHITE或我可能定义的其他常量之一。

对于Ex:当有人实例化ColorScheme类时,他可以使用

 ColorScheme CS  = new ColorScheme(DARK_BLACK);

 ColorScheme CS  = new ColorScheme(5); //or any other non-defined constant

应该返回错误。

4 个答案:

答案 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。