【发布时间】:2018-01-03 06:04:00
【问题描述】:
我有一个类,我继承了一些字段,其中包括我的 id 字段和我对对象的区别。 我正在使用 lombok 生成我的 @EqualsAndHashCode 和 @ToString,但只想使用我的超类的版本,并排除我类中的所有字段。 我想知道是否有办法做到这一点,而不使用排除然后添加所有字段。
我的课:
@EqualsAndHashCode(of = { "id" })
@ToString(of = { "id", "email", "name" })
@Data
public abstract class Resource {
@Id
private Integer id;
private String name;
private String email;
}
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Data
public class Employee extends Resource {
private Organisation organisation;
private List<Skill> skills = new ArrayList<Skill>();
}
在这里,我将了解我的 ToString、Equals 和 HashCode 的组织和技能。
要排除它们,我可以使用:
@ToString(callSuper = true, exclude = { "organisation", "skills" })
但是,由于我有比示例更多的字段,并且将来可能会更多,我希望我可以排除除我的超类之外的所有字段。
我还可以在of = {} 中添加一个字段。
有没有更好的方法来做到这一点?
【问题讨论】:
-
很久没用lombock了。但是您可以从员工类中删除注释。这样你的类中就没有 equlas 和 toString 并且 super 被自动调用
-
没错,我使用
@data来获取一些额外的东西,但如果我删除数据并添加@Getter和@Setter,它会提供更清晰的视图,即主要目标 :) 干杯
标签: java inheritance tostring lombok