我有两个类
@Data
class Org {
int id;
Account orgAccount;
...
}
@Data
class Account {
Org org;
}
我有以下对象
var org = new Org();
org.setId(123);
var account = new Account();
org.setOrgAccount(account);
account.setOrg(org);
如果我执行account.hashCode()
或account.toString()
,我会因为循环而出现堆栈溢出。为了解决这个问题,我这样做
@Data
class Account {
@EqualsHashCode.Exclude
@ToString.Exclude
Org org;
}
但实际上我仍然希望比较 org,但只是针对 id
而不是整个对象。在不实现自己的 equals/hashcode 的情况下执行此操作的最佳方法是什么?
最佳答案
我的解决方案是包含一个可以是私有(private)
的方法,该方法将获取我想要比较的值,并将其包含在 ToString 和 Equals HashCode
@Data
class Account {
@EqualsHashCode.Exclude
@ToString.Exclude
Org org;
@EqualsHashCode.Include
@ToString.Include
private int getOrgId() { return org.getId(); }
}
关于java - 如何使用 equals hashcode 和 toString 与两个有循环的对象进行 Lombok 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61093204/