zl程序教程

您现在的位置是:首页 >  其它

当前栏目

枚举最常规的使用

枚举 常规 使用
2023-09-11 14:22:57 时间

对于单一的常量,我们通常会放到常量类中,如果有需要就添加一个。但是,如果是固定数量,比如春夏秋冬、总部机构类型等,使用枚举是一个更好的方式,因为它们不仅仅有对应的code,还有对应的name,或者说是KV,此时是使用枚举的最好时机。

public enum SeasonEnum {

    // 枚举实例必须定义在枚举类的最前面
    SPRING("1", "春天"),
    SUMMER("2", "春天"),
    AUTUMN("3", "春天"),
    WINTER("4", "春天");// 最后结尾的枚举实例必须以“;”结尾

    private String seasonId;
    private String seasonName;

    // 构造函数必须私有化,使用public编译会报错
    private SeasonEnum (String seasonId, String seasonName) {
        this.seasonId = seasonId;
        this.seasonName = seasonName;
    }
}

此时,一个简单使用的枚举类就编写完成了。至于如何使用,其实很简单,说白了,枚举类就是一个常量类。

if (SeasonEnum.SPRING.seasonId.equals("1")){
    String seasonName = SeasonEnum.SPRING.seasonName;
}

或者给枚举类提供一个get方法,通过get方法获取其属性;但是一般不建议提供set方法,因为其本质是一个常量类,本来是提供给外接口或方法调用的,并不是为了修改,如果使用set方法似乎与定义枚举(常量)的初衷相违背。

如果需要传递一个参数,来获取对应的枚举的value,或者说,放到这里就是seasonName,可以在枚举类中添加一个静态方法:

// 此处方法名是为了避免和该枚举类的get方法相同
public static String getSeasonNameBySeasonId (String seasonId) {
    for (SeasonEnum season : SeasonEnum.values()) {
        if (season.seasonId.equals(seasonId)) {
            return season.seasonName;
        }
    }
    return StringUtils.EMPTY;
}

关于枚举类的本质问题,请参考:

Java 枚举:理解枚举本质