我使用hibernate和id ...用於持久性(這就是爲什麼它在比較中被省略)。 (另外,使用谷歌番石榴幫手等於)我如何正確覆蓋在java中的繼承等於?
HolidayPackageVariant:
public abstract class HolidayPackageVariant {
private Integer idHolidayPackageVariant;
private HolidayPackage holidayPackage;
private String typeHolidayPackage;
@Override
public boolean equals(Object obj) {
if (obj == this)
return true;
if(obj == null)
return false;
if (getClass().equals(obj.getClass())) {
final HolidayPackageVariant otherPackageVariant = (HolidayPackageVariant) obj;
return Objects.equal(getTypeHolidayPackage(),otherPackageVariant.getTypeHolidayPackage())
&& Objects.equal(getHolidayPackage(),
otherPackageVariant.getHolidayPackage());
}
return false;
}
@Override
public int hashCode() {
return Objects.hashCode(getTypeHolidayPackage(), getHolidayPackage());
}
FlightHolidayPackageVariant:
public final class FlightHolidayPackageVariant extends HolidayPackageVariant{
private Destination originCity;
public boolean equals(Object obj) {
// ..
我應該完全覆蓋了equals()或者我應該調用super.equals(.. 。) 某種程度上來說 ?
getClass()。equals(obj.getClass()) - >如果obj爲null,則爲NPE。 – aviad 2012-03-27 08:32:48
[平等的祕密](http://www.angelikalanger.com/Articles/JavaSolutions/SecretsOfEquals/Equals.html); [Effective Java](https://docs.google.com/viewer?a=v&q=cache:qjZ_JbpnXCUJ:java.sun.com/developer/Books/effectivejava/Chapter3.pdf+effective+java+equals&hl=en&gl=uk&pid = BL&srcid = ADGEESith0oQAHumur5q4botdHMQ2NK7pVUOZBXXeQk_Pcu-mh2V0hXFmDkyE3H50j5RtvvTWcqjq62EaK27r9Y0UzQDTaOXYQp2mrYJNCngyeRblQ4taQx4tucpV1He2BSkI8zLRZM5與SIG = AHIEtbR9cAUIlgBoIS1NqH5eCPPR-7HitA) – McDowell 2012-03-27 08:47:48
@aviad更新的空檢查答案。 – brainydexter 2012-03-27 09:20:02