我可以从lomboks @Data批注中排除字段吗?

时间:2019-02-20 09:07:02

标签: java spring getter-setter lombok

让我们说这是我的课程。我想要除日期以外的所有字段的获取器和设置器。是排除的方法吗?

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

3 个答案:

答案 0 :(得分:3)

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

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

或者与AccessLevel.NONE一样好,如Ken Chan的answer建议

因此覆盖了访问级别。但是,这不会对构造函数隐藏。

此外,您还可以使用继承技巧。定义类,如:

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;
}

答案 1 :(得分:3)

好吧,或者更好的方法是使用AccessLevel.NONE使其完全不生成getter或setter。将不会生成私有获取器或设置器。

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

答案 2 :(得分:1)

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

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

最好使用LocalDate代替Date。 Date是已弃用的API。

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