生成equals和hashcode时忽略属性

Jas*_*McD 8 java eclipse guava

假设我有一个班级客户:

public class Customer {

private String firstName;
private String lastName;
private String doNotAddMeToEquals;

//Getters and Setters below

}
Run Code Online (Sandbox Code Playgroud)

我在Eclipse中使用Guava Eclipse插件来生成我的equals()和hashCode()方法; 但是,我也可以使用eclipse - > Source - > Generate HashCode/Equals.无论哪种方式......都没关系.

有没有办法注释属性doNotAddMeToEquals,这样当我使用guava插件生成equals&hashcode方法时,该属性未在列表中显示?

无需更改插件或创建模板.

提前致谢!!

i-t*_*tms 13

使用 Lombok,您可以从 hashcode 和 equals 中排除属性,例如:

@EqualsAndHashCode(exclude = {"nameOfField"})
Run Code Online (Sandbox Code Playgroud)

那就是你的情况

@EqualsAndHashCode(exclude = {"doNotAddMeToEqualsAndHashCode"})
Run Code Online (Sandbox Code Playgroud)


aet*_*aet 8

这听起来像你想要的是这样的:

http://projectlombok.org/features/EqualsAndHashCode.html

它允许您使用注释来驱动equals和hashcode方法中包含的属性.

  • @maaartinus:现在你可以直接注释字段,使用 `@EqualsAndHashCode.Include` 和 `@EqualsAndHashCode.Exclude`。 (3认同)