我有一個班,我繼承了一些領域,其中我的id領域和那些我對這個對象的區別。 我正在使用lombok生成我的@EqualsAndHashCode和@ToString,但只想使用我的超類的版本,並排除了我的類中的所有字段。 我想知道是否有辦法做到這一點,而不使用排除,然後添加所有字段。在@EqualsAndHashCode和@ToString中使用callsuper的更好方法?
我的課:
@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在你的班級和超級被自動調用 –
這是真的,我使用'@ data'來獲得一些額外的東西,但如果我刪除數據並添加'@ Getter'和'@Setter '相反,它提供了一個更清晰的視圖,這是主要目標:) 乾杯 – Larvalis