public abstract class HolidayPackageVariant {
private HolidayPackage holidayPackage;
private String typeHolidayPackage;
@Override
public int hashCode() {
return Objects.hashCode(getTypeHolidayPackage(), getHolidayPackage());
}
}
public final class FlightHolidayPackageVariant extends HolidayPackageVariant{
private Destination originCity;
@Override
public int hashCode() {
// need to add super.hashCode() here somehow ?
return Objects.hashCode(getOriginCity());
}
}
Googleグーバのhashode():Objects.hashCodeはメンバーオブジェクトで機能します。 derived :: hashCode()でスーパークラスhashCode()を指定するにはどうすればよいですか?私は直接派生クラスのhashCode()関数でsuper.membersを使用できますが、super.hashCode()が何らかの方法で変更された場合、それはderived:hashCode(...)に反映されません。これは本当に、おそらくではありません。google guava hashCode()でsuper.hashcodeを呼び出す方法
public int hashCode() {
return Objects.hashCode(getOriginCity(), super.hashCode());
}
ヒントを、ドキュメントから注意してください。 " Java 7以降の注意:このメソッドは非推奨として扱われ、代わりにObjects.hash(java.lang.Object ...)を使用してください。 – dgtc