Java枚举类的简单使用

手动实现枚举类

枚举类的本质就是提供有限个实例,我们自己不能随便new对象,那么我们先按照如下步骤自己手动实现一下代表季节的枚举类,提供春、夏、秋、冬4个实例:

  1. 定义MyEnumation类,私有化构造函数
  2. 声明季节名称、季节描述2个成员变量,生成相应的构造方法和set/get方法
  3. 声明4个静态的MyEnumation类型的常量分别代表春、夏、秋、冬,并初始化
public class MyEnumation {
    //初始化常量实例
    public static final MyEnumation Spring = new MyEnumation("春天","春暖花开");
    public static final MyEnumation Summer = new MyEnumation("夏天","炎炎夏日");
    public static final MyEnumation Autumn = new MyEnumation("秋天","秋高气爽");
    public static final MyEnumation Winter = new MyEnumation("冬天","冰天雪地");
    private String name;//季节名称
    private String desc;//季节描述

    //私有化构造函数
    private MyEnumation(){}

    private MyEnumation(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}

测试使用代码如下:

System.out.println("测试自己手工实现的枚举类");
MyEnumation spring = MyEnumation.Spring;
MyEnumation summer = MyEnumation.Summer;
MyEnumation autumn = MyEnumation.Autumn;
MyEnumation winter = MyEnumation.Winter;

System.out.println(spring.getName() + ":" + spring.getDesc());
System.out.println(summer.getName() + ":" + summer.getDesc());
System.out.println(autumn.getName() + ":" + autumn.getDesc());
System.out.println(winter.getName() + ":" + winter.getDesc());

输出结果:
在这里插入图片描述

利用系统的enum实现枚举类

接下来再用系统的enum同样来实现下春夏秋冬的枚举类:

  1. 利用enum关键字定义Enumation类
  2. 声明季节名称、季节描述2个成员变量,生成相应的构造方法和set/get方法
  3. 声明4实例分别代表春、夏、秋、冬,并初始化
//利用enum关键字定义枚举类
public enum Enumation {
    //初始化实例
    Spring("春天1","春暖花开1"),
    Summer("夏天1","炎炎夏日1"),
    Autumn("秋天1","秋高气爽1"),
    Winter("冬天1","冰天雪地1");
    //声明属性
    private String name;
    private String desc;

    //根据属性定义构造方法
    Enumation(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}

应该能发现,其实利用系统enum定义的枚举,思路和步骤和我们自己手动实现差不多,只是写法上有稍许区别,显得更加简洁:

  1. 构造方法已默认私有化,故方法名前面不需要加private修饰符
  2. 无需再定义静态常量并new对象,只需以实例名称1(参数列表),实例名称2(参数列表)…实例名称n(参数列表);的形式提供所有的枚举实例,这样就会自动调用相应的构造函数生成实例

测试使用代码如下:

System.out.println("测试系统enum实现的枚举类");
Enumation spring1 = Enumation.Spring;
Enumation summer1 = Enumation.Summer;
Enumation autumn1 = Enumation.Autumn;
Enumation winter1 = Enumation.Winter;

System.out.println(spring1.name() + "-" + spring1.ordinal() + "-" + spring1.getName() + "-" + spring1.getDesc());
System.out.println(summer1.name() + "-" + summer1.ordinal() + "-" + summer1.getName() + "-" + summer1.getDesc());
System.out.println(autumn1.name() + "-" + autumn1.ordinal() + "-" + autumn1.getName() + "-" + autumn1.getDesc());
System.out.println(winter1.name() + "-" + winter1.ordinal() + "-" + winter1.getName() + "-" + winter1.getDesc());

输出结果:
在这里插入图片描述
另外系统enum还提供了==values()==方法,用于遍历所有枚举的实例:

System.out.println("测试系统enum的方法");

Enumation[] values = Enumation.values();
for (Enumation value : values) {
    System.out.println(value.getName() + ":" + value.getDesc());
}

输出结果:
在这里插入图片描述
完整代码地址:https://github.com/baobao555/JavaFoundation/tree/master/JavaSE/src/baobao/enumation

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值