我一直在处理一个域问题,其中我有实现公共接口的类,并且我希望能够根据对象是作为接口还是作为具体类实例来访问,从而以不同的方式从这些对象中获取哈希值。基本上我想要的是以下内容:
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 实现它们会破坏,因为这些对象可以根据它们的使用方式具有它们的多个身份视图,而我不想要改变他们对 hashCode 的基本实现;