簡體   English   中英

如何在默認構造函數中使用 lombok

[英]How to use lombok with default constructor

我的 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
            } ]

請指導我如何做到這一點。

@Builder為您制作了一個全參數構造函數; 它不知道 isSoldOut 和 isPurged 所需的非默認值。 您可以@Builder.Default使用@Builder.Default功能: @Builder.Default private Boolean isSoldOut = false; 例如。

或者,只需將它們設為小寫 b 布爾值,'false' 現在是自然默認值。 如果這是一個選項,那么它是迄今為止最好的解決方案。

您的最后一個選擇是自己制作全參數構造函數。

當您將isPurgedisSoldOut定義為boolean而不是Boolean ,默認情況下變量將初始化為false (根據您的構造函數)。

如果您需要另一個初始化,您可以在聲明變量時簡單地定義它,例如將一個設置為 true,另一個設置為 false:

Data
@Builder
@AllArgsConstructor
public class AssignedPropertiesDTO {

  @JsonProperty("is_sold_out")
  private boolean isSoldOut = true;

  @JsonProperty("is_purged")
  private boolean isPurged = false;
}

您是否嘗試使用默認值分配布爾值? 值得注意的是,布爾值默認值為 false。 另外,使用布爾值而不是布爾值,這樣它就不能支持空值。

在一個不相關的注釋中,您通常不會給出以“is”開頭的布爾值名稱。 這通常留給訪問者。

@JsonProperty("sold_out")
private boolean soldOut;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM