IntegerToEnumConverter.java 819 B

123456789101112131415161718192021222324252627282930313233
  1. package com.punchsettle.server.common.converter.enums;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import org.springframework.core.convert.converter.Converter;
  5. /**
  6. * 转换器 数值转换为枚举
  7. *
  8. * @author tyuio
  9. */
  10. public class IntegerToEnumConverter<T extends IJsonEnum<Integer>> implements Converter<Integer, T> {
  11. private final Map<Integer, T> enumMap = new HashMap<>();
  12. public IntegerToEnumConverter(Class<T> enumType) {
  13. T[] enums = enumType.getEnumConstants();
  14. for (T e : enums) {
  15. enumMap.put(e.getCode(), e);
  16. }
  17. }
  18. @Override
  19. public T convert(Integer source) {
  20. T t = enumMap.get(source);
  21. if (t == null) {
  22. throw new IllegalArgumentException("无法匹配对应的枚举类型");
  23. }
  24. return t;
  25. }
  26. }