| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.common.enums; |
| | | |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonCreator; |
| | | import com.fasterxml.jackson.annotation.JsonValue; |
| | | |
| | | public interface BaseEnum<T> { |
| | | @JsonValue |
| | | T getCode(); |
| | | |
| | | String getValue(); |
| | | |
| | | /** |
| | | * éç¨éæå·¥å
·æ¹æ³ï¼å¯è¢«æææä¸¾è°ç¨ï¼ |
| | | */ |
| | | /** |
| | | * éç¨éæå·¥å
·æ¹æ³ï¼æ¯æä» Integer æ String ç±»åç Code è¿è¡ååºåå |
| | | */ |
| | | @JsonCreator(mode = JsonCreator.Mode.DELEGATING) |
| | | static <E extends Enum<E> & BaseEnum<?>> E fromCode(Class<E> enumClass, Object code) { |
| | | if (code == null) { |
| | | return null; |
| | | } |
| | | |
| | | // ç®æ Code çæ´æ°å¼ |
| | | Integer targetCode = null; |
| | | |
| | | if (code instanceof Integer) { |
| | | // 1. å¦æä¼ å
¥çæ¯æ°å (Integer) |
| | | targetCode = (Integer) code; |
| | | } else if (code instanceof String) { |
| | | // 2. å¦æä¼ å
¥çæ¯å符串 ("1") |
| | | try { |
| | | // å°è¯å°å符串转æ¢ä¸ºæ´æ° |
| | | targetCode = Integer.valueOf((String) code); |
| | | } catch (NumberFormatException e) { |
| | | // 妿åç¬¦ä¸²ä¸æ¯ææçæ°åï¼ä¾å¦ "Unknown"ï¼ï¼å targetCode ä¿æä¸º null |
| | | // æ¨ä¹å¯ä»¥å¨è¿éè®°å½æ¥å¿ææ§è¡å
¶ä»é误å¤ç |
| | | // System.err.println("æ æ³å°å符串 Code 转æ¢ä¸ºæ°å: " + code); |
| | | return null; // æè
卿¾ä¸å°å¹é
çæ
åµä¸è¿å null |
| | | } |
| | | } |
| | | // else if (code instanceof Long) { ... æ¨ä¹å¯ä»¥æ·»å 对 Long ç±»åçæ¯æ } |
| | | |
| | | if (targetCode == null) { |
| | | return null; |
| | | } |
| | | |
| | | // 使ç¨è·åå°çæ´æ°å¼è¿è¡æ¥æ¾ |
| | | for (E e : enumClass.getEnumConstants()) { |
| | | if (e.getCode().equals(targetCode)) { |
| | | return e; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | } |