枚举类
一、枚举类的使用
1.枚举类:类的对象只有确定的,有限个。称此类为枚举类
2.当需要定义一组常量时,建议使用枚举类
3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式
二、枚举类的定义方式
1.jdk5.0之前,自定义枚举类
2.jdk5.0之后,使用enum关键字定义枚举类
三、Enum类的常用方法
- values()方法,返回枚举类的对象数组,该方法可以很方便的遍历所有的枚举值
- valueOf(String str):可以把一个字符串转为对应的枚举类对象,要求字符串必须是枚举类对像
- toString():返回当前枚举类对象常量的名称
四、使用enum关键字定义的枚举类实现接口的情况
- 情况一:实现接口,在enum类中实现抽象方法
- 情况二:让枚举类的对象分别实现接口中的方法
//定义一个接口
interface IoTest{
void show();
}
enum Season1 implements IoTest{
//1.提供当前枚举类的多个对象:public static final的
SPRING("春","春暖花开"){
@Override
public void show() {
System.out.println("春天");
}
},
SUMMER("夏","艳阳高照"){
@Override
public void show() {
System.out.println("夏天");
}
},
AUTUMN("秋","秋风瑟瑟"){
@Override
public void show() {
System.out.println("秋天");
}
},
WINTER("冬","雪花漫天"){
@Override
public void show() {
System.out.println("冬天");
}
};
//2.声明Season对象的属性:private final修饰;表示其有限,确定
private final String seasonName;
private final String seasonDesc;
//3.私有化类的构造器,并给对象属性赋值
private Season1(String seasonName,String seasonDesc){
this.seasonName=seasonName;
this.seasonDesc=seasonDesc;
}
//4.其他诉求:获取枚举类对象的属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
// //4.诉求:toString方法
// @Override
// public String toString() {
// return "Season1{" +
// "seasonName='" + seasonName + '\'' +
// ", seasonDesc='" + seasonDesc + '\'' +
// '}';
// }
// @Override
// public void show() {
// System.out.println("这种方式,无论是哪个枚举对象都只能调用此方法");
// }
//
枚举类的使用
public static void main(String[] args) {
//toString()
Season1 summer = Season1.SUMMER;
System.out.println(summer);
System.out.println(Season1.class.getSuperclass());
//values()方法,返回枚举类的对象数组,该方法可以很方便的遍历所有的枚举值
Season1[] values = Season1.values();
for (int i=0;i<values.length;i++){
System.out.println(values[i]);
}
//valueOf(String str):根据提供的objName返回对象名是objName的对象
//没有这个枚举值,则抛异常
Season1 summer1 = Season1.valueOf("SUMMER");
System.out.println(summer1);
summer1.show();//夏天
}
运行结果