龙目岛项目 - 自定义生成 Setter
Project Lombok - customise generated Setter
有没有办法为 @Setter
自定义生成的代码?
考虑以下简单的 class:
@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,就像我在上面的示例中实现的那样。这应该只在 class 注释为 @Entity
的属性和 Collection
属性上完成。其他属性的 Setter,在这个例子中 id
应该像往常一样生成。
有没有办法根据这些条件自定义 Setter 代码的生成?
没有
没有,没有这样的功能,也没有计划。
如评论中所述,您可以自己完成,但这一点也不容易。此外,您必须决定对逻辑进行硬编码(简单但可能对其他人不可用)或解释类似
@SetterWhen(@Or(
@Condition(annotatedWith=Entity.class),
@Condition(declaredType=Collection.class)))
这几乎不可能实现(因为在 Lombok 运行时此信息不可用)。
目前,您所能做的就是允许在每个字段的基础上抑制生成。但是,不可能生成不同的 setter
有一个相关功能:@Singular
,它可能对您有帮助,也可能没有帮助。
有没有办法为 @Setter
自定义生成的代码?
考虑以下简单的 class:
@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,就像我在上面的示例中实现的那样。这应该只在 class 注释为 @Entity
的属性和 Collection
属性上完成。其他属性的 Setter,在这个例子中 id
应该像往常一样生成。
有没有办法根据这些条件自定义 Setter 代码的生成?
没有
没有,没有这样的功能,也没有计划。
如评论中所述,您可以自己完成,但这一点也不容易。此外,您必须决定对逻辑进行硬编码(简单但可能对其他人不可用)或解释类似
@SetterWhen(@Or(
@Condition(annotatedWith=Entity.class),
@Condition(declaredType=Collection.class)))
这几乎不可能实现(因为在 Lombok 运行时此信息不可用)。
目前,您所能做的就是允许在每个字段的基础上抑制生成。但是,不可能生成不同的 setter
有一个相关功能:@Singular
,它可能对您有帮助,也可能没有帮助。