java - 如何使用 equals hashcode 和 toString 与两个有循环的对象进行 Lombok 操作?

标签 java lombok

我有两个类

@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/

相关文章:

java - 在Android Intent中传递任意对象

java - 如何指示 Mapstruct 使用 lombok builder?

java - 使用lombok时设置log4j级别

java - 如何在 Blackberry 中使用轨迹球 API?

使用 Jersey 的 Java 服务不会部署到 Jboss

java - 如何使用 lombok 为实体中嵌入类的成员变量分配默认值?

java - 如何公开和@EmbeddedId 的字段

java - 如何让 Lombok 和 AspectJ 一起工作?

java - 如何在 JNI 中从 C++ 调用 Java 方法

java - 使用嵌套 for 循环的简单 Java 金字塔