每天进步一点点
认识枚举
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则编译器就会报错,枚举可以让编译器在编译时就可以控制源程序赋给的非法值,使用普通变量的方式在开发阶段无法实现这一目标。
在JDK1.5之后,使用关键字enum定义一种新的类型,称为枚举类型
枚举(enum)和类(class)、接口(interface)是同一级别
案例引入
定义一个color,只能定义红、绿、蓝三种颜色
普通方法
那么如何解决这种问题,让color只能在三种颜色中选一种???
Enum类和enum关键字
使用enum关键字定义的枚举类,实际上就相当于定义了一个类,此类继承课Enum类而已。
public enum Color {
RED,
GREEN,
BLUE;
}
枚举常用的方法
protected Enum(String name,int ordinal)
此构造方法不能被外部直接调用,只能被其子类访问,此构造方法为自动调用
public final String name()
返回枚举的名字
public String toString()
返回枚举的名字
public final int ordinal()
返回枚举的序号,默认从0开始
public final boolean equals(Object other)
判断两个枚举是否相同
代码
public class EnumTest {
public static void main(String[] args) {
//定义一个color变量,只能设置为RED、GREEN、BLUE
Color color = Color.BLUE;
System.out.println(color);
System.out.println(color.name());
System.out.println(color.toString());//三种方式都是打印名字
System.out.println(color.ordinal());//返回枚举的序号RED--0、GREEN--1、BLUE--2
Color[] values = Color.values();//返回所有枚举类型
System.out.println(Arrays.toString(values));
}
}
枚举的基本操作
带构造方法的枚举
枚举的本质是一个继承Enum类的子类,JVM编译器把枚举编译后生成一个
final class
枚举不允许从外部调用,所以只能是private修饰
构造方法只能在对象中调用
public enum Color