在Java中定义常量

时间:2013-07-17 22:52:16

标签: java constants

        public enum Categories {
        GENERAL, LIGHTS, EFFECTS, INTERACTIVE, UI("UI"), OPTIMIZATIONS, PARSERS, ANIMATION, MATERIALS, ABOUT;

        private String name;

        Categories() {
            name = toString().toLowerCase(Locale.getDefault());
            name = name.substring(0, 1).toUpperCase(Locale.getDefault()) + name.substring(1, name.length());
        }

        Categories(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

    }

在枚举中,第一行以“GENERAL,EFFECTS”开头,我想知道它们是什么?特别是UI(“UI”)。那些意味着是常数吗?为什么UI(“UI”)具有(和)其余部分没有?和/或

提前致谢...

2 个答案:

答案 0 :(得分:2)

public enum Categories {
    GENERAL, LIGHTS, EFFECTS, INTERACTIVE, UI("UI"), ...

这些代表Enum常量可通过将类名称限定为

来访问它们
Categories.GENERAL, Categories.LIGHTS, Categories.UI, ...

Enums表现得很像一个类,除了它们用于表示常量。因此,他们也可以拥有构造函数和字段。虽然GENERAL使用了无参数构造函数

Categories() {
    name = toString().toLowerCase(Locale.getDefault());
    name = name.substring(0, 1).toUpperCase(Locale.getDefault()) +
           name.substring(1, name.length());
}

UI("UI")使用了另一个重载的构造函数(因为它传递了一个匹配的字符串参数)

Categories(String name) {
    this.name = name;
}

就像一个类一样,这个Enum也定义了一个成员字段

private String name;

可以通过公共getter方法访问

Categories.UI.getName();

答案 1 :(得分:1)

它本身不是常量,它是枚举值。

UI枚举使用字符串参数调用构造函数,其值为" UI"。如果你没有通过" UI"价值将是" Ui"相反,因为将调用无参数构造函数。