デフォルトコンストラクタでロンボクを使用する方法

プージャバーマ:

マイ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;
  }

}

私はfalseにisSoldOutとisPurgedを設定する必要があります。私は、デフォルトコンストラクタをした理由です。しかし、私はクラスのフィールドを設定し、どこかにちょうどゲッター/セッターを使用してプロパティを設定するためのビルダーを()を使用しています。

  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);
  }

私の要件は、いずれかのTrue / Falseのではなく、NULLにIspurged / IsSoldOutを設定することです。

[      {
                "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
            } ]

私はこれを行うことができますどのように私を導いてください。

rzwitserloot:

@Builderあなたのためのすべての-引数のコンストラクタになります。それはisSoldOutとisPurgedに必要なデフォルト以外の値を知っていません。あなたは使用することができ@Builder.Default、このための機能を:@Builder.Default private Boolean isSoldOut = false;たとえば。

代わりにちょうどそれらをbブール値を小文字にし、「偽」は今、自然がデフォルトです。それがすべてではオプションだ場合、それははるかにここに最適なソリューションです。

あなたの最後のオプションはすべて、引数を自分でコンストラクタにすることです。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=385834&siteId=1