假设这是我的类。我想为除了Date之外的所有字段使用getter和setter。这是排除的方法吗?
@Data public class User { String first; String last; String email; Date dob; Boolean active; }
8yparm6h1#
我想这是唯一的隐藏方法:
@Getter(value=AccessLevel.PRIVATE) @Setter(value=AccessLevel.PRIVATE) private Date dob;
或者像Ken Chan的answer建议的那样使用AccessLevel.NONE更好因此覆盖了访问级别。但是这并没有对构造函数隐藏它。你也可以使用继承的技巧。像这样定义类:
AccessLevel.NONE
public class Base { // @Getter if you want private Date dob; }
然后让你的User来扩展它:
User
@Data public class User extends Base { private String first; private String last; private String email; private Boolean active; }
wnavrhmk2#
好吧,或者更好的是使用AccessLevel.NONE来完全使它不生成getter或setter。不会生成私有getter或setter。
@Getter(value=AccessLevel.NONE) @Setter(value=AccessLevel.NONE) private Date dob;
olqngx593#
您可以通过使用以下注解来完成此操作:
@Getter(value=AccessLevel.NONE) @Setter(value=AccessLevel.NONE) private LocalDate dob;
最好使用LocalDate而不是Date。Date是一个已弃用的API。@pirho,你的例子仍然创建了getter和setter,但使它们成为私有的。
myzjeezk4#
我不确定这是否是最佳实践,但是当我必须从@EqualsAndHashCode中排除@ManyToMany字段(以防止堆栈溢出)时,我是这样做的
@EqualsAndHashCode
@ManyToMany
@Entity @Table(name = "users") @Data @EqualsAndHashCode public class User implements UserDetails { // ... @ManyToMany @JoinTable(name = "user_role", joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id"), @JoinColumn(name = "username", referencedColumnName = "username")}, inverseJoinColumns = {@JoinColumn(name = "role_id", referencedColumnName = "id"), @JoinColumn(name = "role", referencedColumnName = "role")}) @EqualsAndHashCode.Exclude private Set<Role> authorities;
换句话说,我显式地添加了一个@EqualsAndHashCode,这样我就可以在@ManyToMany字段处放置一个@EqualsAndHashCode.Exclude注解。
@EqualsAndHashCode.Exclude
4条答案
按热度按时间8yparm6h1#
我想这是唯一的隐藏方法:
或者像Ken Chan的answer建议的那样使用
AccessLevel.NONE
更好因此覆盖了访问级别。但是这并没有对构造函数隐藏它。
你也可以使用继承的技巧。像这样定义类:
然后让你的
User
来扩展它:wnavrhmk2#
好吧,或者更好的是使用
AccessLevel.NONE
来完全使它不生成getter或setter。不会生成私有getter或setter。olqngx593#
您可以通过使用以下注解来完成此操作:
最好使用LocalDate而不是Date。Date是一个已弃用的API。
@pirho,你的例子仍然创建了getter和setter,但使它们成为私有的。
myzjeezk4#
我不确定这是否是最佳实践,但是当我必须从
@EqualsAndHashCode
中排除@ManyToMany
字段(以防止堆栈溢出)时,我是这样做的换句话说,我显式地添加了一个
@EqualsAndHashCode
,这样我就可以在@ManyToMany
字段处放置一个@EqualsAndHashCode.Exclude
注解。