如何在默认构造函数中使用lombok

问题描述 投票:0回答:3

我的AssignedPropertiesDTO类是:

@Data
@Builder
@AllArgsConstructor
public class AssignedPropertiesDTO {

  @JsonProperty("hotel_id")
  private Long hotelId;

  @JsonProperty("oyo_id")
  private String oyoId;

  @JsonProperty("drn")
  private Integer dsrn;

  @JsonProperty("is_sold_out")
  private Boolean isSoldOut;

  @JsonProperty("is_purged")
  private Boolean isPurged;

  AssignedPropertiesDTO() {
    this.isSoldOut = false;
    this.isPurged = false;
  }

}

我需要将isSoldOut和isPurged设置为false。这就是为什么我做了默认构造函数。但是我正在使用Builder()来设置类字段,而只是使用getter / setter来设置属性。

  AssignedPropertiesDTO matchingObject = assignedPropertiesDTOS.stream()
      .filter(assignedPropertiesDTO ->
          assignedPropertiesDTO.getHotelId().equals(Long.valueOf(entry.getKey())))
      .findFirst().orElse(null);
  if (matchingObject == null) {
    assignedPropertiesDTOS.add(AssignedPropertiesDTO
        .builder().hotelId(Long.valueOf(entry.getKey())).dsrn(count).build());
  } else {
    matchingObject.setDsrn(count);
  }

我的要求是将Ispurged / IsSoldOut设置为True / False而不是NULL。

[      {
                "hotel_id": 45693,
                "oyo_id": "GOA2161",
                "drn": null,
                "is_sold_out": null,
                "is_purged": null
            },
            {
                "hotel_id": 45693,
                "oyo_id": "GOA2161",
                "drn": null,
                "is_sold_out": true,
                "is_purged": false
            } ]

请指导我该怎么做。

java builder lombok
3个回答
1
投票

[将isPurgedisSoldOut定义为boolean而不是Boolean时,变量默认情况下初始化为false(根据您的构造函数。


0
投票

@Builder为您创建一个全参数的构造函数;它不知道isSoldOut和isPurged所需的非默认值。您可以为此使用@Builder.Default功能:例如@Builder.Default private Boolean isSoldOut = false;

或仅使它们为小写b布尔值,现在默认为'false'。如果这是一个选择,那么到目前为止,这是最好的解决方案。

您最后的选择是亲自创建all-args构造函数。


0
投票

您是否尝试为布尔值分配默认值?值得注意的是,布尔默认值为false。另外,请使用布尔值而不是布尔值,以使其不支持null。

在不相关的注释上,通常不以'is'开头的布尔名称。通常留给访问者。

@JsonProperty("sold_out")
private boolean soldOut;
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.