本文已参与「博主入驻有礼」活动, 一起开启掘金创作之路。
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。
JAVA枚举
枚举跟普通类一样可以用自己的变量、方法和构造函数,构造函数只能使用 private 访问修饰符,所以外部无法调用。
每个枚举都是通过内部类实现的,且所有的枚举值都是 public static final 的。可通过类名.属性名访问,可用增强型for循环遍历,可用switch语句枚举。
- 类似单例模式的思想,不过更像是一组“常量”,不可更改属性。
枚举类 Color 转化在内部类实现:
class Color
{
public static final Color RED = new Color();
public static final Color BLUE = new Color();
public static final Color GREEN = new Color();
}
enum 定义的枚举类默认继承了 java.lang.Enum 类,并实现了 java.lang.Serializable 和 java.lang.Comparable 两个接口。
values(), ordinal() 和 valueOf() 方法位于 java.lang.Enum 类中:
- values() 返回枚举类中所有的值(返回一个当前枚举类的数组)
- ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样,下标从零开始。
- valueOf(String)方法返回指定字符串值的枚举常量。
在Ruo-Yi中的应用:
public enum UserStatus
{
OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除");
private final String code;
private final String info;
UserStatus(String code, String info)
{
this.code = code;
this.info = info;
}
public String getCode()
{
return code;
}
public String getInfo()
{
return info;
}
}
一个枚举类中的枚举值(成员)都是和自己一个类型的,所以OK、DISABLE也是UserStatus类型的,可以直接调用构造函数赋值。
Java1中还有一个Enumeration接口,是集合类的一种,使用方法同迭代器相同,后来被迭代器取代
作用:枚举是为了定义一组固定在某一范围的常量,是比手动定义常量更方便的方式。