私は持っている
interface Module {
List<String> parse();
}
HashSet<Module>
インターフェイスにはいくつかの実装があり、アプリケーションでは、各モジュールのインスタンスが 1 つだけであることを保証したいと考えています。このためにはhashCode
、各クラスに適切なものが必要です。の適切な実装はhashCode
、1 つのモジュール クラスのさまざまなインスタンスに対して同じ定数を返すが、異なるモジュールに対しては異なる定数を返すものです。
素敵な設計ソリューションを作成するには、次のようにモジュールの名前から hashCode を計算したいと思います。
public int hashCode() {
return ConcreteModule.class.getName().hashCode();
}
しかし、このコードはインターフェイスのすべての実装で同じです...私の考えは、ハッシュコードを実装する抽象モジュールを作成することでしたが、この抽象クラスを拡張するクラスの名前に到達することは可能ですか? お気に入り:
public abstract class AbstractModule implements Module {
public int hashCode() {
// get the class name of class extending the abstract module
// and return hashcode of its string name
}
}
その後
public class ConcreteModule extends AbstractModule implements Module {
// implementation of parse() no need to create hashcode for each module
}
モジュールごとに hashCodes を作成することをお勧めしますか、それとも私が試しているものを作成することは可能ですか? 提案やアドバイスは大歓迎です。前もって感謝します