自定义枚举类 [Java]

自定义枚举类

通过我们对枚举类的了解我们知道: 枚举类的定义方式有两种:

  1. jdk5.0之前我们只能是自定义枚举类
  2. jdk5.0之后我们可以通过新提出的enum关键字来定义枚举类

那么这里我们就要先来说一下如何自定义枚举类

  • 但是在实际编程中我们现在绝大多数情况下都是使用enum关键字来定义枚举来的
注意: jdk5.0和jdk8.0是java中版本更新的两个重要里程碑, 因为jdk5.0和jdk8.0中都提出了很多对java实际编程影响比较大的新特性
这里我们通过一个例子来理解如何自定义枚举类:
  • 下面我们就创建一个表示季节(season)的枚举类
    • 这个季节枚举类中自然有四个对象,也就是春夏秋冬四季

eg:

package 枚举类.自定义枚举类;

public class Season {

    /*
    1. 声明Season类的属性 : 一般都是使用private final共同修饰

    因为枚举来的对象都是常量,所以枚举类对象的属性也就设置为常量,既然设置成为了常量
     */
    private final String seasonName;
    private final String seasonDesc;

    /*
    2. 私有化Season类的构造器,并且给对象的属性(常量)赋值

    注意: 通过构造器赋值的方式我们可以做到每个对象有一个唯一存在的常量
     */
    private Season(String seasonName , String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    /*
    3. 提供当前枚举类的对象
     */
    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("冬季","冰天雪地");

    /*
    4. 满足一些其他的诉求
    4.1 诉求一 : 获取枚举类对象的属性
     */
    public String getSeasonName(){
        return this.seasonName;
    }
    public String getSeasonDesc(){
        return this.seasonDesc;
    }

    /*
    4.2 诉求二 : 提供toString()方法

    注意: 自定义枚举类方式定义的枚举类我们还是建议提供toString()方法的,但是如果是使用enum关键字定义的枚举类我们则一般不重写toString()方法
    因为我们使用enum关键字定义的枚举类都不是直接继承Object类,而是直接继承了java.lang.Enum类,而在Enum类中已经重写了toString()方法
     */
    @Override
    public String toString() {
        return "Season{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }
}
/*
这里我们对这个枚举类进行一个测试
 */
class SesonTest{
    public static void main(String[] args) {
        //创建枚举类的对象
        Season season = Season.SPRING;
        //打印输出 :
        //这里的输出结果应该为 : Season{seasonName='春季', seasonDesc='春暖花开'}
        System.out.println(season);
    }
}

总结:

通过上述举例: 我们可以得出自定义枚举类的一般步骤:

第一步:

如果要创建的自定义类有属性,那么就声明此类的属性

  • 注意: 使用 private final 修饰
第二步:

私有化类的构造器

第三步:

提供当前枚举类的对象

  • 使用public static final关键字共同修饰
第四步:

满足一些其他的诉求: 如: 提供共有的get()方法来获取枚举类对象的属性, 或者是根据需求重写toString()方法等等

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值