-2
        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") 有 ( 和 ) 而其余的都没有?

提前致谢...

4

2 回答 2

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();
于 2013-07-17T23:04:13.970 回答
1

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

UI 枚举使用值为“UI”的字符串参数调用构造函数。如果您不传递“UI”,则值将改为“Ui”,因为将调用无参数构造函数。

于 2013-07-17T22:57:39.587 回答