Java Lombok项目-定制生成的设定器

Java Lombok项目-定制生成的设定器,java,customization,lombok,Java,Customization,Lombok,有没有办法为@Setter定制生成的代码 考虑以下简单类: @Entity @Getter @Setter @NoArgsConstructor public class MyEntity implements Serializable { @Id private long id; @OneToMany private Set<AttributeColumn> columns = new HashSet<>(); pu

有没有办法为
@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);
      }
}
@实体
@吸气剂
@塞特
@诺尔格构装师
公共类MyEntity实现可序列化{
@Id私人长Id;
@独身癖
private Set columns=new HashSet();
公共void集合列(集合列){
this.columns.clear();
this.columns.addAll(columns);
}
}
我希望Lombok为
生成Setter,就像我在上面的示例中实现它一样。这只能在用
@Entity
注释的类和
集合的属性上进行。其他属性的Setter,在本例中为
id
,应该像往常一样生成

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


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

正如在评论中所说的,你可以自己做,但这一点都不容易。此外,您必须决定要么硬编码逻辑(简单,但可能对其他人不可用),要么解释如下内容

@SetterWhen(@Or(
    @Condition(annotatedWith=Entity.class), 
    @Condition(declaredType=Collection.class)))
这几乎是不可能实现的(因为Lombok运行时此信息不可用)


目前,您所能做的就是允许按字段生成。但是,不可能生成不同的setter
有一个相关的功能:,可能对您有帮助,也可能没有帮助。

从技术上讲,您可以扩展Lombok。事实上,这并不容易。您需要了解Eclipse和Javac树结构,从源代码编译Lombok也很麻烦。但并非不可能。我明白了,我误解了你的问题。为否决投票道歉。如果你编辑了你的问题,我将撤销它。@maaartinus我编辑了这个问题,谢谢你删除了否决票。虽然目前还不可能,但我不认为这个问题对其他人来说是无用的。另外,感谢您对答案的澄清!这并没有回答我的问题。@MarcoNätlitz现在回答了。@MarcoNätlitz感谢您的接受。起初,我忘了提供答案,因为已经有评论明确表示这是不可能的。现在我添加了一些细节(可能对你有用,也可能对其他人有用)。