前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >干货|2分钟彻底搞懂java中的枚举

干货|2分钟彻底搞懂java中的枚举

作者头像
知否技术
发布2021-05-28 11:06:00
3100
发布2021-05-28 11:06:00
举报
文章被收录于专栏:eclipse编程eclipse编程eclipse编程

枚举,是一个集合。当一个变量具有固定取值时,我们就将它定义为枚举类型。例如四季有春夏秋冬,性别有男女。

1

声明

1. 关键字:enum

声明枚举时必须使用 enum 关键字

/**
 * 季节枚举
 */
public enum SeasonEnum {
    SPRING,SUMMER,AUTUMN,WINTER;
}
/**
 * 结果枚举
 */
public enum ResultEnum {
    SUCCESS,FAIL;
}

2

使用

1. 理解枚举

我们可以把枚举看作一种,里面的成员是它的几个固定对象

例如SeasonEnum季节枚举,SPRING等就是它的固定对象。因为枚举中所有的成员都是被public static final 修饰的,就像

public class Season {
    public static final String SPRING = "SPRING";
    public static final String SUMMER = "SUMMER";
    public static final String AUTUMN = "AUTUMN";
    public static final String WINTER = "WINTER";

    public static void main(String[] args) {
        System.out.println(Season.AUTUMN);
    }
}

所以可以用【枚举名.对象名】直接获取枚举,返回值就是一个枚举类

public enum SeasonEnum {
    SPRING,SUMMER,AUTUMN,WINTER;

    public static void main(String[] args) {
        SeasonEnum season = SeasonEnum.SPRING;
    }
}

2. 自定义属性

枚举中我们还可以给这些固定对象自定义属性。例如给枚举自定义key和name属性。对了别忘记添加构造方法和set()、get()方法。

/**
 * 季节枚举
 */
public enum SeasonEnum {
    SPRING(1,"春天"),
    SUMMER(2,"夏天"),
    AUTUMN(3,"秋天"),
    WINTER(4,"冬天");
    private Integer key;
    private String name;

    SeasonEnum(Integer key, String name) {
        this.key = key;
        this.name = name;
    }

    public Integer getKey() {
        return key;
    }

    public void setKey(Integer key) {
        this.key = key;
    }

    public String getName() {
        return name;
    }

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

}

自定义属性有什么用呢?其实就是方便存储数据。例如你设计了一个图片表,需要存储图片所在的季节。

一般人常用的做法可能是:

Image image=new Image();
image.setSeason(1);

但是有时候我们会忘记1、2、3这些数字表示的是什么,所以很容易造成数据错误。有了枚举之后,就方便的多了。我们可以这样:

Image image=new Image();
image.setSeason(SeasonEnum.SPRING.getKey());

其中SeasonEnum.SPRING.getKey()的值是 1。

同样SeasonEnum.SUMMER.getKey()的值是2。这样我们保存数据的时候就不会出错了。

3. 自定义方法

public static String getNameByKey(Integer season){
        for (SeasonEnum seasonEnum : SeasonEnum.values()) {
            if(seasonEnum.getKey().equals(season)){
               return  seasonEnum.getName();
            }
        }
        return "";
    }

工作中最常用的自定义方法就是这个方法了。

其中.values()方法返回这个枚举的所有对象。getNameBykey()这个方法就是通过一个数字获取它对应的季节。

例如你传一个1给你返回一个“春天”,这要比你写一堆if/else效果好多了。

-END-

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 知否技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档