[英]How to Lombok with equals hashcode and toString with two objects that have a cycle?
我有兩節課
@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
而不是整個 object。 在不實現自己的 equals/hashcode 的情況下,最好的方法是什么?
我的解決方案是包含一個可以private
的方法,該方法將獲取我想要比較的值並將其包含在 ToString 和 EqualsHashCode
@Data
class Account {
@EqualsHashCode.Exclude
@ToString.Exclude
Org org;
@EqualsHashCode.Include
@ToString.Include
private int getOrgId() { return org.getId(); }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.