缓存枚举属性

  1. public enum TypeEnum {
  2. SINGLE("single")
  3. ;
  4. /**
  5. * 属性建议 final 修饰, 且不提供 setter
  6. */
  7. private final String name;
  8. private TypeEnum(String name) {
  9. this.name = name;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. /**
  15. * 缓存
  16. */
  17. private static final Map<String, TypeEnum> cache = new HashMap<>(values().length);
  18. static {
  19. for (TypeEnum typeEnum: values()) {
  20. cache.put(typeEnum.name, typeEnum);
  21. }
  22. }
  23. /**
  24. * <h3>
  25. * 根据某个属性获取具体的 Enum <br>
  26. * 方式一
  27. * </h3>
  28. * @param name {@code String} 属性值 name
  29. * @return {@link TypeEnum}
  30. */
  31. public static TypeEnum getTypeEnum(String name) {
  32. // for (TypeEnum typeEnum: values()) {
  33. // if (typeEnum.name.equals(name)) {
  34. // return typeEnum;
  35. // }
  36. // }
  37. // return null;
  38. return cache.get(name);
  39. }
  40. }

进阶使用

策略枚举

状态机