什么时候做一个合适的时间来做第4行而不是第3行?还是他们完全重复调用?
1 Object o1 = new Object(); 2 3 int hcObj = o1.hashCode(); 4 int hcSys = System.identityHashCode(o1);
解决方法
有时您可能想要创建一组可区分的对象.其中一些对象可能彼此相等,但您仍然希望引用所有这些对象,只能抛出真正重复的引用.你可能会这样做,因为equals实现不是你感兴趣的(一些类覆盖等于,当你真的不想要它们)或者因为你实际上只是想计算单独的实例等
要做到这一点(例如某种哈希表的支持),您需要基于身份而不是等于的哈希码,这正是IdentityHashCode为您提供的.它很少有用,但它仍然有时可以方便.