枚举
1、枚举类理解:类的对象只有有限个,确定的
2、当需要定义一组常量时,强烈建议使用枚举类
3、如果枚举类只有一个对象,则可以作为单例模式的实现方式
如何使用枚举类
jdk5.0 之前 自定义枚举类
jdk5.0 之后,使用enum关键字定义枚举类
自定义枚举类
/**
* 自定义枚举类
*/
public class SeasonTest {
public static void main(String[] args) {
System.out.println(Season.SPRING.getSeasonName());
}
}
class Season{
private final String seasonName;
private final String seasonDesc;
private Season(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
public static final Season SPRING = new Season("Spring", "穿暖花开");
public static final Season SUMMER = new Season("Summer", "夏日炎炎");
public static final Season AUTUMN = new Season("Autumn", "秋高气爽");
public static final Season WINTER = new Season("Winter", "寒风凛冽");
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
}
使用enum关键字
/**
* 使用enum关键字
* 1、默认继承于 java.lang.Enum 类
*
* Enum类的三个主要方法
* values() 返回所有枚举类对象
* toString() 输出名字
* valueOf("name") 返回名字为name的枚举类对象
*
*/
public class SeasonTest2 {
public static void main(String[] args) {
System.out.println(Season2.SPRING);
Season2.SPRING.show();
System.out.println(Season2.class.getSuperclass());
}
}
interface Info{
void show();
}
/*
* 1、 实现接口,在enum类中实现抽象方法
* 2、 让枚举类的对象分别实现接口中的抽象方法
* */
enum Season2 implements Info{
SPRING("Spring", "穿暖花开"){
@Override
public void show() {
System.out.println("大约在春季");
}
},
SUMMER("Summer", "夏日炎炎"){
@Override
public void show() {
System.out.println("大约在夏季");
}
},
AUTUMN("Autumn", "秋高气爽"){
@Override
public void show() {
System.out.println("大约在秋季");
}
},
WINTER("Winter", "寒风凛冽"){
@Override
public void show() {
System.out.println("大约在冬季");
}
};
private final String seasonName;
private final String seasonDesc;
private Season2(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
}
Enum类
三个常用方法
values() 返回所有枚举类对象
toString() 输出名字
valueOf(“name”) 返回名字为name的枚举类对象
遇到的问题
使用完枚举类之后,发现枚举类的强大之后
然后,发现json 将 枚举类对象 转换成 json格式的对象