共通のインターフェイスを実装するクラスがあり、オブジェクトがインターフェイスとしてアクセスされるか具体的なクラス インスタンスとしてアクセスされるかに応じて、これらのオブジェクトから異なる方法でハッシュを取得できるようにするドメインの問題に対処してきました。基本的に私が欲しいのは次のとおりです。
public class A implements Bar{
@Override
public int hashCode(){ return 1;}
@Override
public int Bar.hashCode(){ return 123;}
}
public class B implements Bar{
@Override
public int hashCode(){ return 1;}
@Override
public int Bar.hashCode(){ return 123;}
}
public class C implements Bar{
@Override
public int hashCode(){ return 1;}
@Override
public int Bar.hashCode(){ return 123;}
}
Bar interfaceObject = new A();
interfaceObject.hashCode(); //return 123
Bar aObject = new A();
aObject.hashCode();// return 1
私の知る限り、これを行う方法はなく、これが問題を引き起こす可能性がある理由はたくさん考えられますが、私より賢い人に、作成以外でこれを行う良い方法があるかどうか尋ねたかったのです。インターフェースには のような機能がありますpublic int getCustomHashCodeForJustThisInterface()
。これらのオブジェクトをフープを介さずに hashMaps で使用できるのは気に入っていますが、hashCode の現在の実装では、これらのオブジェクトは使用方法に応じて ID の複数のビューを持つことができるため、機能しなくなります。 hashCode の基本実装を変更したい。