假设我有一个枚举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)
我不知道这有什么性能优势,但它使代码更简单.
您可以创建填充值的数组:
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)