【问题标题】:Omitting one Setter/Getter in Lombok在 Lombok 中省略一个 Setter/Getter
【发布时间】:2011-12-21 02:26:55
【问题描述】:

我想在 Lombok 中使用数据类。由于它有大约十几个字段,我用@Data 对其进行了注释,以便生成所有的setter 和getter。但是,有一个特殊字段我不希望实现访问器。

Lombok 是如何省略这个字段的?

【问题讨论】:

    标签: java lombok


    【解决方案1】:

    使用以下代码省略/排除 创建 setter 和 getter。 value 键应在@Getter@Setter 内使用。

    @Getter(value = AccessLevel.NONE)
    @Setter(value = AccessLevel.NONE)
    private String mySecret;
    

    【讨论】:

      【解决方案2】:

      根据@Data description可以使用:

      所有生成的 getter 和 setter 都是公开的。覆盖 访问级别,使用显式 @Setter 注释字段或类 和/或 @Getter 注释。您也可以使用此注释(通过 将它与 AccessLevel.NONE 结合使用以抑制生成 getter 和/或二传手。

      【讨论】:

        【解决方案3】:

        您可以将访问级别传递给@Getter@Setter 注释。这对于使 getter 或 setter 受保护或私有很有用。它也可以用来覆盖默认值。

        使用@Data,默认情况下您可以公开访问访问器。您现在可以使用特殊的访问级别 NONE 来完全省略访问器,如下所示:

        @Getter(AccessLevel.NONE)
        @Setter(AccessLevel.NONE)
        private int mySecret;
        

        【讨论】:

        • 完美。如果私有字段是 POJO 并且还使用 @Delegate() 注释,则它可以用于将一组属性提取到单独的可重用类中。这对于将同一组属性应用于多个类(一种用于添加属性的混合)可能很有用。例如,代表一组属性的 mixin,可应用于各种 XML 元素的建模。
        • 你有没有类似的事情在builder中省略一个字段?
        • 您的意思是该属性不应该出现在构建器中?不,没有什么直接用于此的。请记住,@Builder 可以放在函数和构造函数以及类上,并且只提供设置该函数签名中出现的那些属性。
        • 它没有为此属性实现任何setter和getter,其中@Data默认包含setter和getter。通过提及AccessLevel.NONE 将被排除在外。
        猜你喜欢
        • 2014-07-08
        • 2020-10-11
        • 1970-01-01
        • 2017-10-31
        • 2012-08-01
        • 2020-08-02
        • 2020-05-19
        相关资源
        最近更新 更多