Java Flexible use of enumerations to represent a set of strings
- 2021-09-11 20:24:00
- OfStack
The Java enumeration represents a set of strings
public class HelloWorld {
public static void main(String []args) {
System.out.println("Hello World!");
System.out.println(Season.SPRING.toString());
System.out.println(Season.SPRING.value());
}
}
enum Season {
SPRING("spring"), SUMMER("summer"), AUTUMN("autumn"), WINTER("winter");
public final String value;
private Season(String value) {
this.value = value;
}
public String value() {
return this.value;
}
}
The program output is as follows:
Hello World!
SPRING
spring
Proper Use of Java Enumeration Classes
Specification uses enumeration classes
public enum StatEnum {
SUCCESS(1," Success "),
FAILD(0," Failure "),
REPEAT(-1," Repetition "),
INNER_ERROR(-2," System anomaly "),
DATA_ERROR(-3," Data anomaly ");
private int state;
private String stateInfo;
StatEnum(int state, String stateInfo) {
this.state = state;
this.stateInfo = stateInfo;
}
public int getState() {
return state;
}
public String getStateInfo() {
return stateInfo;
}
public static StatEnum stateOf(int index){
for(StatEnum state: values()){
if(state.getState() == index){
return state;
}
}
return null;
}
}
Enumeration matches interface 1 to use
// Defining an interface
public interface CodeEnum {
Integer getCode();
String getMessage();
}
// Defining an enumeration
public enum StatusEnum implements CodeEnum {
SUCCESS(0, " Success "),
DAILD(1, " Failure ");
private Integer code;
private String message;
StatusEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
@Override
public Integer getCode() {
return code;
}
@Override
public String getMessage() {
return message;
}
}
// Defining a tool class
public class EnumUtil {
public static <T extends CodeEnum> T getByCode(Integer code, Class<T> enumClass) {
for (T each: enumClass.getEnumConstants()) {
if (code.equals(each.getCode())) {
return each;
}
}
return null;
}
}
Use:
EnumUtil.getByCode(0, StatusEnum.class).getMessage()
EnumUtil.getByCode(1, StatusEnum.class).getCode()