我可以从 lomboks @Data 注释中排除字段吗?
Can I exclude fields from lomboks @Data annotation?
假设这是我的class。我想要除日期之外的所有字段的 getter 和 setter。有办法排除吗?
@Data
public class User {
String first;
String last;
String email;
Date dob;
Boolean active;
}
我认为这是隐藏的唯一方法:
@Getter(value=AccessLevel.PRIVATE)
@Setter(value=AccessLevel.PRIVATE)
private Date dob;
或者像 Ken Chan 的 建议的那样 AccessLevel.NONE
可能更好
所以覆盖了访问级别。然而,这并没有向构造函数隐藏它。
你也可以用继承来耍花招。定义 class 如:
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;
}
嗯,或者更好的是使用 AccessLevel.NONE
来完全使其不生成 getter 或 setter。不会生成私有 getter 或 setter。
@Getter(value=AccessLevel.NONE)
@Setter(value=AccessLevel.NONE)
private Date dob;
您可以使用以下注释来完成此操作:
@Getter(value=AccessLevel.NONE)
@Setter(value=AccessLevel.NONE)
private LocalDate dob;
最好使用 LocalDate 而不是 Date。日期已弃用 API.
@pirho,您的示例仍然创建 getter 和 setter,但将它们设为私有。
假设这是我的class。我想要除日期之外的所有字段的 getter 和 setter。有办法排除吗?
@Data
public class User {
String first;
String last;
String email;
Date dob;
Boolean active;
}
我认为这是隐藏的唯一方法:
@Getter(value=AccessLevel.PRIVATE)
@Setter(value=AccessLevel.PRIVATE)
private Date dob;
或者像 Ken Chan 的 AccessLevel.NONE
可能更好
所以覆盖了访问级别。然而,这并没有向构造函数隐藏它。
你也可以用继承来耍花招。定义 class 如:
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;
}
嗯,或者更好的是使用 AccessLevel.NONE
来完全使其不生成 getter 或 setter。不会生成私有 getter 或 setter。
@Getter(value=AccessLevel.NONE)
@Setter(value=AccessLevel.NONE)
private Date dob;
您可以使用以下注释来完成此操作:
@Getter(value=AccessLevel.NONE)
@Setter(value=AccessLevel.NONE)
private LocalDate dob;
最好使用 LocalDate 而不是 Date。日期已弃用 API.
@pirho,您的示例仍然创建 getter 和 setter,但将它们设为私有。