提示:以下是本篇文章正文内容,下面案例可供参考
一、背景与定义
枚举是在JDK1.5以后引入的。主要用途是:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式:
public static int final RED = 1;
public static int final GREEN = 2;
public static int final BLACK = 3;
但是上述定义方式有一个明显缺点:如果我想要一个普通的1,电脑可能会把它当成RED。于是我们引进了枚举来组织,也就是拥有了枚举类型,而不是普通的整形1了,其定义方式如下:
public enum TestEnum {
RED,BLACK,GREEN;
}
二、枚举的使用
2.1switch语句
代码如下(示例):
public enum TestEnum {
RED,BLACK,GREEN,WHITE;
public static void main(String[] args) {
TestEnum testEnum=TestEnum.RED;
switch (testEnum) {
case RED:
System.out.println("red");
break;
case BLACK:
System.out.println("black");
break;
case WHITE:
System.out.println("WHITE");
break;
default:
break;
}
}
}
2.2常用方法
代码如下(示例):
public enum TestEnum {
RED,BLACK,GREEN,WHITE;
public static void main(String[] args) {
TestEnum[] testEnums=TestEnum.values();
for(int i=0;i< testEnums.length;i++){
System.out.println(testEnums[i]);
}
}
}
=========================================================
public enum TestEnum {
RED,BLACK,GREEN,WHITE;
public static void main(String[] args) {
TestEnum[]testEnums=TestEnum.values();
for(int i=0;i<testEnums.length;i++){
System.out.println(testEnums[i]+"->"+testEnums[i].ordinal());
}
}
}
=========================================================
public enum TestEnum {
RED,BLACK,GREEN,WHITE;
public static void main(String[] args) {
TestEnum testEnum=TestEnum.valueOf("RED");
System.out.println(testEnum);
}
}
=========================================================
public enum TestEnum {
RED,BLACK,GREEN,WHITE;
public static void main(String[] args) {
TestEnum testEnum=TestEnum.valueOf("RED");
System.out.println(RED.compareTo(BLACK));
System.out.println(BLACK.compareTo(RED));
System.out.println(BLACK.compareTo(WHITE));
}
2.3枚举的构造方法是默认的
public enum TestEnum1 {
RED("red",1),BLACK("black",2),GREEN,WHITE;
public String color;
public int ordinal;
TestEnum1(String color,int ordinal){
this.color=color;
this.ordinal=ordinal;
}
private TestEnum1(){
}
}
三、枚举的优缺点
优点:
- 枚举常量更简单安全 。
- 枚举具有内置方法 ,代码更优雅
缺点: - 不可继承,无法扩展
总结
1、枚举本身就是一个类,其构造方法默认为私有的,且都是默认继承与 java.lang.Enum 2、枚举可以避免反射和序列化问题 3、枚举的优点和缺点
|