Project Lombok - 自定义生成的Setter

时间:2018-01-04 14:09:23

标签: java customization lombok

有没有办法为@Setter自定义生成的代码?

考虑以下简单类:

@Entity
@Getter
@Setter
@NoArgsConstructor
public class MyEntity implements Serializable {

      @Id private long id;

      @OneToMany
      private Set<AttributeColumn> columns = new HashSet<>();

      public void setColumns(Set<AttributeColumn> columns) {
          this.columns.clear();
          this.columns.addAll(columns);
      }
}

我希望Lombok为columns生成Setter,因为我在上面的示例中实现了它。这应仅在使用@Entity注释的类和Collection的属性上完成。其他属性的Setter,在此示例id中应该像往常一样生成。

有没有办法根据这些标准自定义Setter代码的生成?

1 个答案:

答案 0 :(得分:1)

没有

不,没有这样的功能,也没有计划。

正如评论中所说,你可以自己做,但这根本不容易。此外,您必须决定硬编码逻辑(简单但可能无法用于其他人)或解释类似

@SetterWhen(@Or(
    @Condition(annotatedWith=Entity.class), 
    @Condition(declaredType=Collection.class)))

几乎无法实现(因为当Lombok运行时此信息不可用)。

目前,您所能做的就是允许在每个字段的基础上抑制生成。但是,不可能生成不同的setter 有一个相关的功能:@Singular ,可能会或可能不会帮助您。