Java基础——枚举
枚举
引入
在Java程序中,我们通常通过声明初始化常量或变量来满足程序的需求。
但是有些方法在运行时,它需要的数据不能是任意的,必须是一定范围内的值。
通过枚举,我们把值规定到固定范围,不用担心代码编写失误或超出范围;
同时,枚举可以在整个程序内调用,不用重复编写,提高代码复用率;
此外枚举也能让代码整体更直观的、可读性。
枚举的应用场景:错误码,状态机。
定义
-
不能继承
- Java规定单继承,enum已经继承了
java.lang.Enum
类
- Java规定单继承,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
导入项目的方法: Java基础——Java如何导入本地项目
Java基础——枚举
原文:https://www.cnblogs.com/occlive/p/13362034.html