【问题标题】:Can I exclude fields from lomboks @Data annotation?我可以从 lomboks @Data 注释中排除字段吗?
【发布时间】:2019-07-13 21:59:08
【问题描述】:

假设这是我的课。我想要除日期之外的所有字段的获取器和设置器。是一种排除方法吗?

@Data
public class User {
    String first;
    String last;
    String email;
    Date dob;
    Boolean active;
}

【问题讨论】:

    标签: java spring getter-setter lombok


    【解决方案1】:

    我认为这是唯一的隐藏方法:

    @Getter(value=AccessLevel.PRIVATE)
    @Setter(value=AccessLevel.PRIVATE)
    private Date dob;
    

    或者像 Ken Chan 的 answer 建议的 AccessLevel.NONE 可能会更好

    所以覆盖访问级别。然而,这并没有对构造函数隐藏它。

    您还可以利用继承来制造技巧。定义类如:

    public class Base {
        // @Getter if you want
        private Date dob;
    }
    

    并让您的 User 扩展它:

    @Data
    public class User extends Base {
        private String first;
        private String last;
        private String email;
        private Boolean active;
    }
    

    【讨论】:

      【解决方案2】:

      好吧,或者更好的是使用AccessLevel.NONE 完全使其不生成getter 或setter。不会生成私有的 getter 或 setter。

      @Getter(value=AccessLevel.NONE)
      @Setter(value=AccessLevel.NONE)
      private Date dob;
      

      【讨论】:

        【解决方案3】:

        您可以使用以下注释来做到这一点:

            @Getter(value=AccessLevel.NONE)
            @Setter(value=AccessLevel.NONE)
            private LocalDate dob;
        

        最好使用 LocalDate 而不是 Date。 Date 是一个已弃用的 API。

        @pirho,您的示例仍然创建 getter 和 setter,但将它们设为私有。

        【讨论】:

          猜你喜欢
          • 2020-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-17
          • 2017-10-01
          • 1970-01-01
          • 2011-11-25
          相关资源
          最近更新 更多