美文网首页
Enum定义最佳实践

Enum定义最佳实践

作者: xin_5457 | 来源:发表于2021-08-06 10:44 被阅读0次

    Enum 在 jackson 序列化和反序列化时默认使用枚举的name(), 而一般存储的数据可能是自定义字段。可以通过一下方法改进。

    • 通过@JsonValue指定序列化的字段为code
    • 通过@JsonCreator 指定反序列化构造函数
    • 构造静态Map提高查询效率,而不是每次都去循环values()查询
    public enum UserAgentEnum {
     
        IOS(1, "IOS"),
        ANDROID(2, "ANDROID"),
        WXSP(3, "微信小程序"),
        PC(4, "PC"),
        H5(5, "H5");
     
        @JsonValue
        @Getter
        private final int code;
     
        @Getter
        private final String description;
     
        UserAgentEnum(int code, String description) {
            this.code = code;
            this.description = description;
        }
     
        private static final Map<Integer, UserAgentEnum> VALUES = new HashMap<>();
     
        static {
            for (final UserAgentEnum userAgent : UserAgentEnum.values()) {
                UserAgentEnum.VALUES.put(userAgent.getCode(), userAgent);
            }
        }
     
        @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
        public static UserAgentEnum of(int code) {
            return UserAgentEnum.VALUES.get(code);
        }
    }
    

    相关文章

      网友评论

          本文标题:Enum定义最佳实践

          本文链接:https://www.haomeiwen.com/subject/xeybvltx.html