public enum WaterState {// 如果存在更多属性,直接在后面添加即可GAS(1, "gas"),LIQUID(2, "liquid"),SOLID(3, "solid");// 如果有必要,还可以添加以id为key的mappings。// 如果不需要通过name获取枚举值,也可以不添加mappings字段private static final Map<String, WaterState> mappings = new HashMap<>(4);static {for (WaterState state : values()) {mappings.put(state.name, state);}}private int id;private String name;// 枚举类型构造函数访问修饰符默认为private且只能为private,不要认为这里是defaultWaterState(int id, String name) {this.id = id;this.name = name;}public String getName() {return name;}public int getId() {return id;}public Optional<WaterState> name2Enum(String name) {String trimName = Optional.ofNullable(name).filter(StringUtils::isNotBlank).map(StringUtils::trim).orElse(StringUtils.EMPTY);return Optional.ofNullable(mappings.get(trimName));}}
这是我目前认为的枚举类的最佳实践。后续发现更好的再更新
