@
目录
一、枚举类简介
- 类的对象确定且有限,就成为枚举类。
- 当需要定义一组常量时,使用枚举类。
- 如果枚举类只有一个对象,则可以作为单例模式的实现方式。
二、自定义枚举类
1、方式一:jdk5.0之前,自定义枚举类
代码实现
class Season{ //1.属性要定义为 private final的 private final String seasonName; private final String seasonDesc; //2.构造器私有化(因为属性是final的,所以要在构造器中初始化) private Season(String seasonName, String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = 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("冬天","我是冬天"); }
2、方式二:jdk5.0,用enum关键字定义枚举类
代码实现
enum Season1{ //1.提供枚举类的对象 SPRING("春天","我是春天"), SUMMER("夏天","我是夏天"), AUTUMN("秋天","我是秋天"), WINTER("冬天","我是冬天"); //2.定义属性,声明为private final private final String seasonName; private final String seasonDesc; //3.私有化构造器,并给对象赋值 private Season1(String seasonName, String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //4.额外需求:get()方法 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } }
说明
- 枚举类的对象在第一行声明,用逗号分隔,分号结尾。不用自己加
public static final
,因为系统会自动添加。也不用加new + 构造器
来创建。 - enum定义的枚举类默认继承
java.lang.Enum类
,因此不能再继承其他类。可以通过
- 枚举类的对象在第一行声明,用逗号分隔,分号结尾。不用自己加
三、Enum类的主要方法
1、toString()
- 返回当前枚举类对象的名字。
- 默认输出对象和调用toString是一样效果
2、values()
- 静态方法
- 返回枚举类型的对象数组,可以方便的遍历所有枚举值。
3、valueOf(String str)
- 静态方法
- 把一个字符串转换为对应的枚举类对象。
- 名字必须一致,否则会出异常:
IllegalArgumentException: No enum constant com.lzx.java.Season1.spring
四、使用enum关键字定义的枚举类去实现接口
1、情况一
- 实现接口,在enum类中实现抽象方法即可
2、情况二:
- 每个对象分别去实现抽象方法,则不同的对象调用各自实现的抽象方法。