如何阻止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
相关产品推荐
相关产品推荐

