java - Project Lombok - 自定义生成的 Setter

标签 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 为生成 Setter,就像我在上面的示例中实现的那样。这只应在使用 @Entity 注解的类和 Collection 属性上完成。其他属性的 Setter(本例中的 id)应照常生成。

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

最佳答案

没有。

<小时/>

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

正如评论中已经指出的,你可以自己做,但这一点也不容易。此外,您必须决定要么对逻辑进行硬编码(简单但对其他人可能无法使用),要么解释类似的内容

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

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

<小时/>

目前,您所能做的就是允许在每个字段的基础上抑制生成。然而,不可能生成不同的 setter 有一个相关功能:@Singular ,这可能对你有帮助,也可能没有帮助。

关于java - Project Lombok - 自定义生成的 Setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48097020/

相关文章:

visual-studio - Visual Studio 2008 中的 Ctrl+Tab

java - Lombok 不生成 getters/setters(使用 Luna 或命令行编译)

Android - ExpandableListView 更改子项的背景

java - 使用 Gradle 激活 Lombok 注释处理器

java - SonarQube 误报鱿鱼 :S1450 for @Getter (lombok) annotated fields

java - Matlab 到 C 到 Android

java - Java 8 中 List 的 Comparator.comparing 中的链式方法

java - 将 XML 文件读入 hashmap 并创建新对象

java - 查找 hadoop-core-2.7.2.jar 路径

perl - 如何在 HPC 环境中最好地管理安装在集中且自定义位置的多个版本的 Perl?