1.自定义枚举类:
示例代码:
/**
* JDK 1.5之前:自定义枚举类
*/
public class TestEnumeration {
public static void main(String[] args) {
Season spring = Season.SPRING;
System.out.println(spring);
Season spring2 = Season.SPRING;
System.out.println(spring2);
}
}
class Season {
//1.提供类的属性,声明为private final
private final String seasonName;
private final String seasonDec;
//2.声明为final的属性在构造器中初始化
private Season(String seasonName , String seasonDec) {
this.seasonName = seasonName;
this.seasonDec = seasonDec;
}
//3.通过公共的方法来调用属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDec() {
return seasonDec;
}
//4.创建枚举类对象
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","白雪皑皑");
@Override
public String toString() {
return "Season [seasonName=" + seasonName + ", seasonDec=" + seasonDec
+ "]";
}
}
2.使用enum关键字定义枚举类:
2.1.常用的方法:values() valueOf(String name)
2.2.枚举类实现接口:可以让不同的枚举类对象调用被重写的抽象方法,执行的效果不同。(相当于让每个对象重写抽象方法)
示例代码:
public class TestEnumeration2 {
public static void main(String[] args) {
Season2 spring = Season2.SPRING;
System.out.println(spring);
Season2 spring2 = Season2.SPRING;
System.out.println(spring2);
System.out.println();
//1.values()
Season2[] sarr = Season2.values();
for (int i = 0; i < sarr.length; i++) {
System.out.println(sarr[i]);
}
System.out.println();
//2.valueOf(String name):要求传入的形参name是枚举类对象的名字
//否则,报java.lang.IllegalArgumentException异常
Season2 sea = Season2.valueOf("SPRING");
System.out.println(sea);
spring.show();
}
}
interface Info {
void show();
}
//枚举类型
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 seasonDec;
private Season2(String seasonName , String seasonDec) {
this.seasonName = seasonName;
this.seasonDec = seasonDec;
}
public String getSeasonName() {
return seasonName;
}
public String getSeasonDec() {
return seasonDec;
}
@Override
public String toString() {
return "Season2 [seasonName=" + seasonName + ", seasonDec=" + seasonDec
+ "]";
}
/* @Override
public void show() {//在这里重写是每个不同对象共用的
System.out.println("这是一个季节。");
}*/
}