枚举介绍
Java中的枚举是JDK5.0以后添加的新特性,枚举是用来定义一组数量确定的常量的类。
枚举类是一个特殊的类,它和普通类一样可以有构造方法,也可以有属性和普通方法。可以实现接口。
枚举的定义
public enum Color{
RED,BLACK,BLUE;
}
这就定义了一个枚举类,其中的RED,BLACK,BLUE是这个枚举类的实例,每个实例需要用‘,’隔开,最后一个使用‘;’表示结束。说它们是实例那为什么没有用new呢?
那是因为在JDK5.0以前想要使用枚举需要自己定义。
public class Color{
public static final int RED = 1;
public static final int BLUE = 2;
public static final int BLACK = 3;
}
在JDK5.0以后,为了能够更加方便的使用枚举,就出现了enum关键字。定义了枚举类之后,就把之前全部重复的代码给省去了。比如public static final int
所以才有了上面这样简单的定义。
枚举的使用
在定义了枚举类之后,直接使用类名加属性就可以调用。因为所有都是static的。
public class EnumTest {
public static void main(String[] args) {
Color black = Color.BLACK;
}
}
在switch中使用
public class EnumTest {
public static void main(String[] args) {
Color red = Color.RED;
switch (red){
case RED:
System.out.println("红色");
break;
case BLUE:
System.out.println("蓝色");
break;
case BLACK:
System.out.println("黑色");
break;
}
}
}
在switch中使用时,不需要加类名,直接使用对象就行了。
枚举类的原理
枚举类实际上是继承了Enum类。
Enum中常用的方法:
返回类型
方法名
说明
String
toStirng()
返回枚举类的名称
枚举类型[]
values()
返回返回所有枚举常量
枚举类型
valuesOf(String name)
根据名称返回枚举常量
枚举类实现接口
枚举类实现了接口之后,需要实现对应的抽象方法,有两种实现方式,会有不一样的结果。
第一种:在枚举类中实现
public class EnumTest {
public static void main(String[] args) {
Color.RED.show();
Color.BLUE.show();
Color.BLACK.show();
}
}
interface Show{
void show();
}
enum Color implements Show {
RED,
BLUE,
BLACK;
@Override
public void show() {
System.out.println("枚举了红色");
}
}
/*
运行结果:
枚举了红色
枚举了红色
枚举了红色
*/
如果我想要每个颜色打印不一样的数据,这种实现方式就不行了,需要第二种实现方式。
在每个常量后面实现方法:
enum Color implements Show {
RED{
@Override
public void show() {
System.out.println("枚举了红色");
}
},
BLUE{
@Override
public void show() {
System.out.println("枚举了蓝色");
}
},
BLACK{
@Override
public void show() {
System.out.println("枚举了黑色");
}
};
}
/*
运行结果:
枚举了红色
枚举了蓝色
枚举了黑色
*/