@
- 一、枚举类简介
-
二、自定义枚举类
- 1、方式一:jdk5.0之前,自定义枚举类
- 2、方式二:jdk5.0,用enum关键字定义枚举类
-
三、Enum类的主要方法
- 1、toString()
- 2、values()
- 3、valueOf(String str)
-
四、使用enum关键字定义的枚举类去实现接口
一、枚举类简介
- 类的对象确定且有限,就成为枚举类。
- 当需要定义一组常量时,使用枚举类。
- 如果枚举类只有一个对象,则可以作为单例模式的实现方式。
二、自定义枚举类
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、情况一
2、情况二:
- 每个对象分别去实现抽象方法,则不同的对象调用各自实现的抽象方法。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|