比较来自不同类的2个实例的公共字段

kid*_*won 1 java compare equality class equals

java中是否有更简单的方法来比较不同类的实例的公共字段(相同名称和类型),而无需显式检查每个字段与另一个字段.

moo.getFoo() == doo.getFoo();
moo.getRoo().equals(doo.getRoo())
Run Code Online (Sandbox Code Playgroud)

-

Class Moo {
  private int foo;
  private Object roo;
}

Class Doo {
  private int foo;
  private Object roo;

  private String ho;
}
Run Code Online (Sandbox Code Playgroud)

或者至少在这种情况下是否可能

Class Doo extends Moo {    
  private String ho;
}
Run Code Online (Sandbox Code Playgroud)

ezt*_*tam 5

您可以使用CompareToBuilderEqualsBuilder阿帕奇共享郎.此Utilities自动为类的所有字段创建compareTo(),equals()或hashCode()方法的结果.

public int compareTo(Object o) {
     return CompareToBuilder.reflectionCompare(this, o);
}


public boolean equals(Object obj) {
    return EqualsBuilder.reflectionEquals(this, obj);
}
Run Code Online (Sandbox Code Playgroud)