枚举
引入
在Java程序中,我们通常通过声明初始化常量或变量来满足程序的需求。
但是有些方法在运行时,它需要的数据不能是任意的,必须是一定范围内的值。
通过枚举,我们把值规定到固定范围,不用担心代码编写失误或超出范围;
同时,枚举可以在整个程序内调用,不用重复编写,提高代码复用率;
此外枚举也能让代码整体更直观的、可读性。
枚举的应用场景:错误码,状态机。
定义
不能继承
Java规定单继承,enum已经继承了java.lang.Enum类
可以实现接口
Java中一个类可以实现多个接口
//权限修饰符 enum 枚举名 implements 接口名{
// 元素1,元素2...;//分号可有可无
//}
public enum Grade{
A,B,C,D,E;
}
成员
枚举成员同样是变量(遵循标识符规定)
Java 不允许使用 = 为枚举常量赋值
//不能以数字开头
public enum Num{
1,2,3;
}
//不能用=赋值
public enum Grade{
A = 1,B = 2;
}
本质
除了不能继承,基本上可以将 enum 看做一个常规的类
Java的enum本质是一个class(类)
枚举类型,编译后就是.class
枚举成员是枚举对象,枚举对象均为静态常量(不可改变)//第一种写法
public enum Color{
RED,BLACK,WHITE;
}
//第二种写法
public enum Color{
RED(),BLACK(),WHITE();
}
枚举可添加构造方法public enum Color{
RED("red color",0),BLACK("black color",1),WHITE("white color",2);
//必须加,enum不能实例化对象
Color(String str,int num){
name = str;
id = num;
}
String name;
int id;
}
区别
枚举不可以实例化
自动为构造方法加上private,私有属性
枚举成员变量只有get方法
特点
数据集
数值稳定
元素个数有限
所有枚举类继承Enum类的方法
方法名
参数
返回值
作用
compareTo()
枚举值
int
当前枚举元素在该元素的位置 -表示左 (+)表示右
equals()
object
boolean
判断是否是当前枚举元素
hashcode()
int
获取枚举值的哈希码
ordinal()
int
获取枚举元素所在位置
name()
String
返回实例名
toString()
String
枚举元素转为String
getClass()
class
获取当前枚举元素的类
getDeclaringClass())
class
获取定义枚举的类
Java 不允许使用=为枚举常量赋值。
可通过values()返回枚举实例数组
可通过 ==比较enum实例
博客相关java项目:查看Github项目
对应github项目:MeiJu
原文:https://www.cnblogs.com/occlive/p/13362034.html