- 我整理了一些Enum的小例子,第一个是比较简单的,基本的枚举类型
public enum FlightCrowJob {
//先后顺序,越靠后,默认越大,因此POLIT值最大
FLIGHT_ATTENDANT,
COPOLIT,
POLIT;
public static void main(String[] args) {
for (int i = 0; i < FlightCrowJob.values().length; i++) {
System.out.println("每一个:"+FlightCrowJob.values()[i]);
}
System.out.println("转换为Enum:"+FlightCrowJob.valueOf("COPOLIT"));
System.out.println("比大小:"+FlightCrowJob.POLIT.compareTo(FlightCrowJob.COPOLIT));
}
}
//输出
每一个:FLIGHT_ATTENDANT
每一个:COPOLIT
每一个:POLIT
转换为Enum:COPOLIT
比大小:1
- 这个增加了一个自定义的名字。switch支持Enum
public enum FlightCrowJob {
FLIGHT_ATTENDANT("Flight Attendant"),
COPOLIT("First officer"),
POLIT("Captain");
private String title;
public String getTitle() {
return title;
}
FlightCrowJob(String title) {
this.title = title;
}
public static void main(String[] args) {
System.out.println(FlightCrowJob.POLIT.getTitle()+" "+FlightCrowJob.POLIT.name());
switch (FlightCrowJob.POLIT) {
case POLIT:
System.out.println("Pilot");
break;
case COPOLIT:
System.out.println("Copolit");
break;
case FLIGHT_ATTENDANT:
System.out.println("Attendant");
break;
}
}
}
//输出
Captain POLIT
Pilot
- 后边这个略微复杂点,增加了id,名字以及具体如何使用的方式,通过Rest接口调用,直接创建的几种方式
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int id;
// 构造方法
private Color(String name, int id) {
this.name = name;
this.id = id;
}
// 普通方法
public static String getName(int id) {
for (Color c : Color.values()) {
if (c.getId() == id) {
return c.name;
}
}
return null;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
- Controller的Get方式请求,注意传递的枚举的方式
@GetMapping(value = "/test")
public Res test(@RequestParam Color color) throws Exception{
logger.info("count==="+color.getName());
return new Res();
}
//实际通过color=RED就可以正确的传递枚举,对应上就好了RED("红色", 1)
http://127.0.0.1:9081/v2/test?color=RED
- 创建也容易,通过valueOf或者直接Color.RED就行
public static void main(String[] args) {
Color color = Color.valueOf("RED");
System.out.println(color.getName());
Color color1 = Color.RED;
System.out.println(color1.getName());
//由于我没有重写equals方式,所以目前是等价的,重写了就需要按照自定义的来判断了
System.out.println(color==color1);
System.out.println(color.equals(color1));
}
//输出
红色
红色
true
true
网友评论