具体的なサブクラスによって初期化する必要がある hashcode フィールドを持つ抽象 Java クラスがあります。初期化メソッドを抽象化することを考えていました。つまり、
abstract class A {
protected int hashcode;
// hashcode should be initialized in constructor
protected A () { hashcode = setHashcode(); }
abstract int setHashcode() {} // implemented by subclasses
}
しかし、残念なことに、異なるサブクラスは異なる数の引数を受け取る必要がありますsetHashcode
。たとえば、クラス B はそのフィールドの 2 つを使用してハッシュコードを計算し、クラス C は 3 つ必要な場合がありますが、スーパーへの呼び出しは B のコンストラクターの最初の行でなければならないため、このスキーム動作しません。この問題を解決する別の方法/設計パターンがあるかどうか疑問に思っていますか?