1,当类中的对象是有限个,确定的被称为枚举类,当需要定义一组常量时,使用枚举类
2,若枚举只有一个对象,则可以作为一种单列模式的实现方式
如何定义枚举类1,jdk5.0之前,自定义枚举类
public class SeaonTest {
public static void main(String[] args) {
// 调用自定义枚举类的方法
Season spring = Season.SPRING;
System.out.println(spring);
}
}
// 自定义枚举类
class Season{
// 声明Season对象的属性:private final进行修饰
private final String seasonName;
private final String seasonDesc;
// 私有化的构造器,并给对象属性赋值
private Season (String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
// 3,提供当前枚举类的多个对象:public static final的
public static final Season SPRING = new Season("春天", "1");
public static final Season SUMMER = new Season("夏天", "2");
public static final Season AUTUMN = new Season("秋天", "3");
public static final Season WINTER = new Season("冬天", "4");
// 4,其他诉求L:获取枚举类对象的属性,git
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
@Override
public String toString() {
return "Season{" +
"seasonName='" + seasonName + ''' +
", seasonDesc='" + seasonDesc + ''' +
'}';
}
}
2,jdk5.0之后,可以使用关键字enum进行枚举类的定义
// 定义的枚举类默认继承于java.lang.Enum
//
public static void main(String[] args) {
Season2 summer = Season2.SUMMER;
// 如果使用toString方法重写的化打印的是重写之后的内容 Season{seasonName='夏天', seasonDesc='2'}
System.out.println(summer);// SUMMER 默认toSteing打印的是当前对象的名字
System.out.println(Season2.class.getSuperclass());
}
}
// 自定义枚举类
enum Season2{
// 3,提供当前枚举类的对象,多个对象之间使用","隔开,末尾对象使用";"结束
SPRING ("春天", "1"),
SUMMER ("夏天", "2"),
AUTUMN ("秋天", "3"),
WINTER ("冬天", "4");
// 声明Season对象的属性:private final进行修饰
private final String seasonName;
private final String seasonDesc;
// 私有化的构造器,并给对象属性赋值
private Season2 (String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
// 4,其他诉求L:获取枚举类对象的属性,git
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
@Override
public String toString() {
return "Season{" +
"seasonName='" + seasonName + ''' +
", seasonDesc='" + seasonDesc + ''' +
'}';
}
Enum类的主要常用方法
public class SeaonTest1 {
// 定义的枚举类默认继承于java.lang.Enum
//
public static void main(String[] args) {
Season2 summer = Season2.SUMMER;
// 如果使用toString方法重写的化打印的是重写之后的内容 Season{seasonName='夏天', seasonDesc='2'}
System.out.println(summer.toString());// SUMMER 默认toSteing打印的是当前对象的名字
// System.out.println(Season2.class.getSuperclass());
// values方法
Season2[] values = Season2.values();
for ( int i = 0; i
Enum关键字定义的枚举类实现接口的情况
1,实现接口,在enum类中实现抽象方法
2,让枚举类的对象分别实现接口中的抽象方法



