Java枚举类的简单使用

导读:本篇文章讲解 Java枚举类的简单使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

手动实现枚举类

枚举类的本质就是提供有限个实例,我们自己不能随便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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/2676.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!