java enum数组的默认值或初始值

Tan*_*.7x 38 java enums

假设我有一个枚举public enum Day { MONDAY, TUESDAY, ..., SUNDAY },然后我实例化一天数组Day[] days = Day[3];.

如何使一天(例如MONDAY)所有天数的默认值days?如果设置如上,则所有元素day都为null.我希望enum的行为更像是int和Strings,它们分别初始化为0和"".

Jon*_*eet 78

正如其他人所说,枚举是引用类型 - 它们只是特定类的编译器语法糖.JVM不了解它们.这意味着该类型的默认值为null.当然,这不仅会影响数组 - 它意味着类型为枚举的任何字段的初始值也为null.

但是,您不必循环自己来填充数组,因为有一个库方法可以帮助:

Day[] days = new Day[3];
Arrays.fill(days, Day.MONDAY);
Run Code Online (Sandbox Code Playgroud)

我不知道这有什么性能优势,但它使代码更简单.


Ste*_*nne 8

您可以创建填充值的数组:

Day[] days = {Day.MONDAY, Day.MONDAY, Day.MONDAY};
Run Code Online (Sandbox Code Playgroud)

或者,您可以在枚举中创建静态方法以返回默认值的数组:

enum Day { MONDAY, TUESDAY, SUNDAY; 
    public static Day[] arrayOfDefault(int length) {
        Day[] result = new Day[length];
        Arrays.fill(result, MONDAY);
        return result;
    }
}

Day[] days = Day.arrayOfDefault(3);
Run Code Online (Sandbox Code Playgroud)


jzd*_*jzd 6

枚举类似于初始化为null.就像类一样,你需要使用循环在每个位置设置一个值.