1. 枚举概念
枚举就是[有限实现个数]的类型
例如:
电影类型:
科幻片, 爱情片, 剧情片, 动作片…
图书类型:
历史类, 科幻类, 传记类, 教材类…
枚举其实就是一个特殊的类, 可以有成员变量, 方法, 实现一个或多个接口, 定义自己的构造方法
一个Java源文件中最多只能定义一个public访问权限的枚举类, 并且该Java源文件也必须和该枚举类的类名相同
2. 定义枚举类
enum关键字
public enum Direction {
FRONT, BEHIND, LEFT, RIGHT;
}
说明:
每个枚举选项之间用逗号隔开
如果枚举没有构造方法, 方法等, 在最后一个枚举选项后面可以不用打分号
但是如果枚举类还有其他成员, 那么必须在最后一个枚举项后方加分号
3. 枚举例子
public enum Direction {
FRONT, BEHIND, LEFT, RIGHT;
}
public class Test {
public static void main(String[] args) {
Direction d = Direction.FRONT;
switch (d) {
case FRONT:
System.out.println("前面");
break;
case BEHIND:
System.out.println("后面");
break;
case LEFT:
System.out.println("左面");
break;
case RIGHT:
System.out.println("右面");
break;
default:
System.out.println("错误的方向");
}
Direction d1 = d;
System.out.println(d1);
}
}
4. 常用API
int compareTo(E e)
比较两个枚举常量谁大谁小,其实比较的就是枚举常量在枚举类中声明的顺序
例如FRONT的下标为0,BEHIND下标为1,那么FRONT小于BEHIND
boolean equals(Object o)
比较两个枚举常量是否相等
int hashCode()
返回枚举常量的hashCode
String name()
返回枚举常量的名字
int ordinal()
返回枚举常量在枚举类中声明的序号,第一个枚举常量序号为0
String toString()
把枚举常量转换成字符串
static T valueOf(Class enumType, String name)
把字符串转换成枚举常量
5. 枚举的属性
5.1 枚举构造方法
public enum Direction {
//在枚举常量后面必须添加分号,因为在枚举常量后面还有其他成员时,分号是必须的。枚举常量必须在枚举类中所有成员的上方声明。
FRONT, BEHIND, LEFT, RIGHT;
//枚举类的构造器不可以添加访问修饰符,枚举类的构造器默认是private的。但你自己不能添加private来修饰构造器。
Direction(){
System.out.println("hello");
}
}
5.2 枚举的方法
public enum Direction {
FRONT, BEHIND, LEFT, RIGHT;
Direction() {
System.out.println("hello");
}
//给枚举类添加方法
public void fun() {
System.out.println("hello Enum!");
}
}
5.3 枚举的成员属性
public enum Direction {
FRONT("前面"), BEHIND("后面"), LEFT("左面"), RIGHT("右面");
Direction() {
System.out.println("hello");
}
// 给本类添加一个实例属性prop
//为本类设置一个有参构造器,本类只有这一个构造器,那么说明在声明枚举常量时必须调用本构造器。每个常量都会传递一个字符串给自己的explain属性。
private String prop;
Direction(String prop) {
this.prop = prop;
}
public String getProp() {
return prop;
}
public void setProp(String prop) {
this.prop = prop;
}
// 给枚举类添加方法
public void fun() {
System.out.println("hello Enum!");
}
}