一、定义
有限的、确定的、数据可以作为枚举类
例如:
天气:春、夏、秋、冬
星期:星期一、星期二、..... 星期天
性别:男、女、(可能有个未知)
这一类的信息是不变的,有限的,所以可以直接用枚举
所以:定义一组常量时,建议使用枚举
二、格式
1.创建Enum类,必须先创建对象信息
2.由于枚举是不变的,也就是final修饰的,但是在枚举类中不需要final,写了会报错
3.每个对象用 (逗号)”,“ 隔开,(分号)”;“结束
示例:
在输入的时候输出的是枚举类中对象的名称,原因是enum的父类是Enum,并不是Object
/**
* 天气枚举类,春夏秋冬
*/
public enum Season {
SPRING,
SUMMER,
AUTUMN,
WINTER;
public static void main(String[] args) {
Season autumn = Season.AUTUMN;
System.out.println(autumn);
}
}
结果:
三、给枚举加入属性
1.定义属性,final修饰
2.定义有参构造器
3.重写toString方法
示例:
/**
* 天气枚举类,春夏秋冬
*/
public enum Season {
//枚举对象
SPRING("1","春天"),
SUMMER("2","夏天"),
AUTUMN("3","秋天"),
WINTER("4","冬天");
//参数
private final String type;
private final String desc;
//有参构造器
Season(String type, String desc) {
this.type = type;
this.desc = desc;
}
//重写toString
@Override
public String toString() {
return "Season{" +
"type='" + type + '\'' +
", desc='" + desc + '\'' +
'}';
}
public static void main(String[] args) {
//获取枚举信息
Season autumn = Season.AUTUMN;
// System.out.println(autumn);
//获取枚举信息参数
System.out.println(autumn);
}
}
结果:
四、枚举实现其他类
1.枚举实现类
2.在每个枚举类对象中都重写方法
示例:
接口
public interface Info {
void show();
}
代码
/**
* 天气枚举类,春夏秋冬
*/
public enum Season implements Info{
//枚举对象
SPRING("1","春天"){
@Override
public void show() {
System.out.println("春天");
}
},
SUMMER("2","夏天"){
@Override
public void show() {
System.out.println("夏天");
}
},
AUTUMN("3","秋天"){
@Override
public void show() {
System.out.println("秋天");
}
},
WINTER("4","冬天"){
@Override
public void show() {
System.out.println("冬天");
}
};
//参数
private final String type;
private final String desc;
//有参构造器
Season(String type, String desc) {
this.type = type;
this.desc = desc;
}
//重写toString
@Override
public String toString() {
return "Season{" +
"type='" + type + '\'' +
", desc='" + desc + '\'' +
'}';
}
public static void main(String[] args) {
//获取枚举信息
Season autumn = Season.AUTUMN;
// System.out.println(autumn);
//获取枚举信息参数
// System.out.println(autumn);
//调用实现的类方法
autumn.show();
}
}
结果
五、疑惑解答
为什么要用枚举?不用调用数据?
原因:
调用数据库需要查数据库,并且有时间的耗时,而且枚举都是常量并且确定的不修改的,属于没必要写在数据库中