@Accessors(chain=true)주석 오류 해결 방안

2848 단어 @Accessors주해
다음 과 같다.
Cannot invoke setItemTitle(String) on the primitive type void
정 의 된 실체 클래스 는 다음 과 같 습 니 다.

  @Data
  public static class RefundOrderItem implements Serializable {
    /**
     *     
     */
    @JsonProperty("item_title")
    private String itemTitle;
    /**
     *   
     */
    private BigDecimal quantity;
    public RefundOrderItem() {
      super();
    }
    public RefundOrderItem(String itemTitle, BigDecimal quantity) {
      this.itemTitle = itemTitle;
      this.quantity = quantity;
    }
  }
}
이런 서법 은 잘못 을 보고 하지 않 는 다.

request.getItems()
.add(new RefundOrderItem(productPO.getName(), quantity));
이런 서법 은 잘못 되 었 다.

request.getItems()
.add(new RefundOrderItem().setItemTitle(productPO.getName()).setQuantity(quantity)));
상술 한 잘못 보고 한 해결 방법 은 다음 과 같다.
정 의 된 실체 클래스 에 주석 추가:@Accessors(chain=true)
실체 클래스 코드 는 다음 과 같 습 니 다.

@Data
  @Accessors(chain = true)
  public static class RefundOrderItem implements Serializable {
    /**
     *     
     */
    @JsonProperty("item_title")
    private String itemTitle;
    /**
     *   
     */
    private BigDecimal quantity;
    public RefundOrderItem() {
      super();
    }
    public RefundOrderItem(String itemTitle, BigDecimal quantity) {
      this.itemTitle = itemTitle;
      this.quantity = quantity;
    }
  }
}
lombok 의@Accessors 주석 사용 에 주의 하 세 요.
Accessors 번역 은 액세스 기 입 니 다.이 주 해 를 통 해 getter 와 setter 방법의 형식 을 제어 할 수 있 습 니 다.
특히 일반적인 get|set 가 아니라면 이러한 설정(chain=true 또는 chain=true)을 사용 하 십시오.일부 확장 도 구 를 사용 하면 문제 가 있 습 니 다.예 를 들 어 BeanUtils.populate 가 map 를 bean 으로 변환 할 때 사용 할 수 없습니다.구체 적 인 문 제 는 변환 소스 코드 분석 을 볼 수 있다.
@Accessors(fluent = true)#
flent 속성,getter,setter 방법 을 사용 하 는 방법 명 은 모두 속성 명 이 며,setter 방법 은 현재 대상 을 되 돌려 줍 니 다.

class Demo{
    private String id;
    private Demo id(String id){...}  //set
    private String id(){} //get
}
@Accessors(chain = true)#
chain 속성 을 사용 하여 setter 방법 으로 현재 대상 을 되 돌려 줍 니 다.

class Demo{
    private String id;
    private Demo setId(String id){...}  //set
    private String id(){} //get
}
@Accessors(prefix = "f")#
prefix 속성 을 사용 하면 getter 와 setter 방법 은 속성 이름 의 지정 접 두 사 를 무시 합 니 다(낙타 봉 이름 준수)

class Demo{
    private String fid;
    private void id(String id){...}  //set
    private String id(){} //get
}
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기