为什么调用HashMap.equals()时会自动调用到其父类AbstractMap的equals()方法?

比如如下代码

HashMap hm1 = new HashMap();
HashMap hm2 = new HashMap();
hm1.put("aaa", 111);
hm2.put("bbb", 222);

if(hm1.equals(hm2)){
    System.out.println("in!!");
}

调试到if语句时,按理说应该是跟进到HashMap的equals()方法,结果却是跳到了HashMap的父类AbstractMap的equals()方法。请问是什么原因?

阅读 2.4k
2 个回答

image.png

由图可以看出来,equals方法没有被重新,直接继承了AbstractMap

因为HashMap没有重写AbstractMapequals方法
所以HashMapequals方法就是AbstractMapequals方法
所以调试HashMapequals方法会进入AbstractMapequals方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题