枚举类的使用
1.1 枚举类的理解
/* 一、枚举类:类的对象只有有限个,确定的。
*
* 二、举例如下:
* 星期:Monday(星期一)、......、Sunday(星期天)
* 性别:Man(男)、Woman(女)
* 季节:Spring(春节)......Winter(冬天)
* 支付方式:Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditCard(信用卡)
* 就职状态:Busy、Free、Vocation、Dimission
* 订单状态:Nonpayment(未付款)、Paid(已付款)、Delivered(已发货)、Return(退货)、Checked(已确认)、Fulfilled(已配货)
* 线程状态:创建、就绪、运行、阻塞、死亡
*
* 三、当需要定义一组常量时,强烈建议使用枚举类
*
* 补充:如果枚举类的对象只有一个,则也是单例模式的体现。
*/
1.2 如何创建枚举类
* 方式一:自定义类的方式
* 方式二:使用enum关键字 (jdk5.0)
-
方式一
public class EnumTest {
public static void main(String[] args) {
Season spring = Season.SPRING;
System.out.println(spring);
System.out.println(spring.getSeasonName());
System.out.println(spring.getSeasonDesc());
}
}
class Season{//季节
//对象的实例变量
private final String seasonName;//季节的名称
private final String seasonDesc;//季节的描述
//提供私有的构造器
private Season(String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
//内部提供4个枚举类的对象
public static final Season SPRING = new Season("春天","春暖花开");
public static final Season SUMMER = new Season("夏天","夏日炎炎");
public static final Season AUTUMN = new Season("秋天","秋高气爽");
public static final Season WINTER = new Season("冬天","白雪皑皑");
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
-
方式二:
/**
*
* 使用enum定义枚举类
*
* 使用enum定义的枚举类默认继承于ava.lang.Enum类
*
* @author shkstart
* @create 16:57
*/
public class EnumTest1 {
public static void main(String[] args) {
Season1 spring = Season1.SPRING;
System.out.println(spring);
System.out.println(spring.getClass().getSuperclass());
}
}
enum Season1{//季节
//内部提供4个枚举类的对象
SPRING("春天","春暖花开"),
SUMMER("夏天","夏日炎炎"),
AUTUMN("秋天","秋高气爽"),
WINTER("冬天","白雪皑皑");
//对象的实例变量
private final String seasonName;//季节的名称
private final String seasonDesc;//季节的描述
//提供私有的构造器
private Season1(String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
// @Override
// public String toString() {
// return "Season1{" +
// "seasonName='" + seasonName + '\'' +
// ", seasonDesc='" + seasonDesc + '\'' +
// '}';
// }
}
1.3 Enum类中的常用方法
与1.4 合并
1.4 枚举类的对象实现接口中的方法
/**
* 一、枚举类的使用
* 1. 枚举类的理解
* 2. 自定义类的方式,体现枚举类
* 3. jdk5.0:使用enum关键字定义
* 4. enum定义的方式中,常用的方法
* toString():没有重写的情况下,默认返回当前枚举类对象的名字
* values():返回当前枚举类所有的对象构成的数组
* valueOf(String name):返回指定名称的枚举类的对象
* 5. 枚举类的对象实现接口的操作
*
*
* @author shkstart
* @create 9:19
*/
public class EnumTest {
public static void main(String[] args) {
Season1 summer = Season1.SUMMER;
System.out.println(summer.getClass().getSuperclass());
System.out.println(summer.toString());
System.out.println("##############");
Season1[] season1s = Season1.values();
for (int i = 0; i < season1s.length; i++) {
System.out.println(season1s[i]);
season1s[i].show();
}
System.out.println("##############");
Season1 winter = Season1.valueOf("WINTER");
System.out.println(winter);
//如果枚举类中不存在指定名称的枚举类的对象的话,报IllegalArgumentException
// winter = Season1.valueOf("WINTER1");
// summer.show();
}
}
//enum Season1{//季节
// //内部提供4个枚举类的对象
// SPRING,
// SUMMER,
// AUTUMN,
// WINTER;
//
// //提供私有的构造器
// private Season1(){
//
// }
//
//}
interface Info{
void show();
}
enum Season1 implements Info{//季节
//内部提供4个枚举类的对象
SPRING("春天","春暖花开"){
public void show(){
System.out.println("春天在哪里?");
}
},
SUMMER("夏天","夏日炎炎"){
public void show(){
System.out.println("宁夏");
}
},
AUTUMN("秋天","秋高气爽"){
public void show(){
System.out.println("秋天不回来");
}
},
WINTER("冬天","白雪皑皑"){
public void show(){
System.out.println("大约在冬季");
}
};
//对象的实例变量
private final String seasonName;//季节的名称
private final String seasonDesc;//季节的描述
//提供私有的构造器
