简介:
Java枚举现在越来越强。
以前没有枚举的时候,全是用常量,这个太low了。
有枚举的话,可以直观的、比常量更简洁、更加拟人的方式,非常棒。
1、最简单的枚举 - Color
package com.maizijf.test.testenum;
public enum Color {
RED,GREEN,BLUE;
}
1.1、使用这个最简单的枚举
@Test
public void testEnum(){
Color color=Color.RED;
System.out.println(color.name());
System.out.println(color.ordinal());
System.out.println(Arrays.toString(Color.values()));
}
发现:enum其实继承Enum类,会强制实现父类里面的构造方法
protected Enum(String name, int ordinal) {
this.name = name;
this.ordinal = ordinal;
}
因此,enum会有父类的2个属性name,ordinal,一个是名称,一个是顺序。
2、带构造方法的
package com.maizijf.test.testenum;
public enum Color {
RED(10),GREEN(20),BLUE;
private int color;
private Color(){//无参构造方法,建议保留,专业写法
}
private Color(int color){
this.color=color;
}
public int getColor() {
return color;
}
}
2.1、测试
@Test
public void test2(){
Color color=Color.BLUE;
System.out.println(color.name());//blue
System.out.println(color.ordinal());//2
System.out.println(color.getColor());//0
System.out.println(Arrays.toString(Color.values()));//red,green,blue
}
3、和switch结合
@Test
public void test3(){
Color color=Color.BLUE;
switch (color){
case RED:
System.out.println("red matched");
case GREEN:
System.out.println("red matched");
case BLUE:
System.out.println("blue matched");
default:
System.out.println("None matched");
}
}
4、实战
3.1、ResponseNum代码
package com.myenum;
/**
* Created by Germmy on 2018/3/31.
*/
public enum ResponseEnum {
SUCCESS("0000000", "success"), PASSWORD_NOT_EXIST("1000001", "specified id is not exist");
private String errorCode;
private String errorMessage;
ResponseEnum(String errorCode, String errorMessage) {
this.errorCode = errorCode;
this.errorMessage = errorMessage;
}
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
}
3.2、单元测试
@Test
public void testDoubleEnum(){
ResponseEnum re=ResponseEnum.SUCCESS;
System.out.println(re.getErrorCode());
System.out.println(re.getErrorMessage());
}