You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Lombok为类属性设置默认值?解决int属性自动设0问题

解决Lombok中int类型属性默认值问题

先看你定义的Lombok类:

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@NoArgsConstructor
@AllArgsConstructor
public class StatusInfo {
 public String reasonCode;
 public String result;
 public String description;
 public int httpResponseCode;
}

针对httpResponseCode不想用默认值0的问题,有几种可行方案:

  • 改用Integer引用类型
    把int换成Integer,引用类型的默认值是null,刚好符合你加的@JsonInclude(NON_NULL)注解,未赋值时序列化不会输出该字段。修改后的代码:

    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @NoArgsConstructor
    @AllArgsConstructor
    public class StatusInfo {
        public String reasonCode;
        public String result;
        public String description;
        public Integer httpResponseCode;
    }
    
  • 自定义无参构造函数设置默认值
    自己编写无参构造,给httpResponseCode指定你需要的默认值(比如-1),同时可以去掉Lombok的@NoArgsConstructor注解,避免冲突:

    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @AllArgsConstructor
    public class StatusInfo {
        public String reasonCode;
        public String result;
        public String description;
        public int httpResponseCode;
    
        public StatusInfo() {
            // 设置自定义默认值
            this.httpResponseCode = -1;
        }
    }
    
  • 结合@Builder和@Default注解指定默认值
    启用Lombok的Builder模式,用@Default给属性设置默认值,这样通过Builder创建对象时,未指定该属性就会用你设置的值:

    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public class StatusInfo {
        public String reasonCode;
        public String result;
        public String description;
        @Default
        public int httpResponseCode = -1;
    }
    

内容的提问来源于stack exchange,提问作者Loren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:50:29