我可以从龙目岛@Data注释中排除字段吗?

2022-09-03 04:22:59

假设这是我的班级。我想要除日期之外的所有字段的 getter 和 setter。这是一种排除的方法吗?

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

答案 1

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

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

或者也许更好,就像Ken Chan的答案所暗示的那样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

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

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

推荐