自定义枚举类
//自定义枚举类型
public class Season {
//4.其他诉求
@Override
public String toString() {
return "Season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
}
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
//2.私有化构造器,并给对象属性赋值。
private Season(String seasonName, String seasonDesc) {
super();
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
//1.声明对象属性,用private,final修饰
private final String seasonName;
private final String seasonDesc;
//3.提供当前枚举类的多个对象,public ,static ,final
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 class SeasonTest {
public static void main(String[] args) {
Season spring=Season.SPRING;
System.out.println(spring);
}
}
运行结果:
用enum定义枚举
说明:SPRING等变量的类型是属于Season2的类型
enum Season2 {
//3.提供当前枚举类的多个对象,public ,static ,final
SPRING("春天","春暖花开"),
SUMMER("夏天","夏日炎炎"),
AUTUMN("秋天","秋高气爽"),
WINTER("冬天","冰天雪地");
// 4.其他诉求
// @Override
// public String toString() {
// return "Season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
// }
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
//2.私有化构造器,并给对象属性赋值。
private Season2(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
//1.声明对象属性,用private,final修饰
private final String seasonName;
private final String seasonDesc;
}
测试
public class SeasonTest2 {
public static void main(String[] args) {
Season2 summer=Season2.SUMMER;
//toString()
System.out.println("toString:"+summer);
System.out.println("枚举类的父类"+summer.getClass().getSuperclass());
System.out.println("-----values----");
Season2[] values=Season2.values();
for(Season2 i:values) {
System.out.println(i);
}
System.out.println("----线程状态-------");
Thread.State state[]=Thread.State.values();
for(Thread.State i:state) {
System.out.println(i);
}
System.out.println("-----valueOf-----");
//valueOf(Strig objName):返回枚举类中对象名是objName的对象
//如果没有objName的枚举对象,则抛异常IllegalArgumentException
Season2 winter=Season2.valueOf("WINTER");
System.out.println(winter);
}
}
运行结果:
使用enum关键字定义枚举类实现接口的情况
情况一:实现接口,在enum中实现抽象方法
接口:
interface Info {
void show();
}
枚举类实现接口:
enum Season2 implements Info{
//3.提供当前枚举类的多个对象,public ,static ,final
SPRING("春天","春暖花开"),
SUMMER("夏天","夏日炎炎"),
AUTUMN("秋天","秋高气爽"),
WINTER("冬天","冰天雪地");
// 4.其他诉求
// @Override
// public String toString() {
// return "Season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
// }
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
//2.私有化构造器,并给对象属性赋值。
private Season2(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
//1.声明对象属性,用private,final修饰
private final String seasonName;
private final String seasonDesc;
@Override
public void show() {
System.out.println("这是一个季节");
}
}
测试:
@Test
public void test1() {
Season2.SUMMER.show();
Season2.SPRING.show();
Season2.AUTUMN.show();
Season2.WINTER.show();
}
运行结果:
情况二:让枚举类的对象分别实现接口中的抽象方法
枚举类:
enum Season2 implements Info{
//3.提供当前枚举类的多个对象,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("大约在冬季");
}
};
// 4.其他诉求
// @Override
// public String toString() {
// return "Season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
// }
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
//2.私有化构造器,并给对象属性赋值。
private Season2(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
//1.声明对象属性,用private,final修饰
private final String seasonName;
private final String seasonDesc;
}
测试:
@Test
public void test1() {
Season2.SUMMER.show();
Season2.SPRING.show();
Season2.AUTUMN.show();
Season2.WINTER.show();
System.out.println("------for-----");
Season2[] values = Season2.values();
for(int i=0;i
运行结果:



