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