@Accessors(chain = true)注解 解决报错

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

你可能感兴趣的:(Java)