我相信我在某处读到有人在编译时(使用 APT)生成 equals/hashcode/toString 方法,通过识别哪些字段应该是散列/相等性测试的一部分。我在网上找不到类似的东西(我可能梦到过?)...
可以这样做:
public class Person {
@Id @GeneratedValue private Integer id;
@Identity private String firstName, lastName;
@Identity private Date dateOfBirth;
//...
}
对于一个实体(所以我们想排除一些字段,比如 id)。
或者像 scala 案例类,即值对象:
@ValueObject
public class Color {
private int red, green, blue;
}
不仅文件变得更易读和更容易编写,而且还有助于确保所有属性都是 equals/hashcode 的一部分(以防您稍后添加另一个属性,而无需相应地更新方法)。
我听说 IDE 对 APT 的支持不是很好,但我认为这不是主要问题。毕竟,测试主要由持续集成服务器运行。
知道这是否已经完成,如果没有,为什么? 谢谢
最佳答案
我正在使用 Project Lombok为此。
关于java - 使用注释生成 equals/hashcode/toString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2535592/