日期:2014-05-20  浏览次数:20775 次

Map接口问题
今天翻了一下java的api,发现HashMap继承了AbstractMap,AbstractMap已经实现了map接口,为什么HashMap又一次显示的实现了map接口,为了用反射的时候更方便获得map接口?
map?hashmap

------解决方案--------------------
往简单了想 , 其实就是增加可读性, 大多数程序员只关心是不是Map  没人关心是不是AbstractMap ,所以Sun公司想到了很多程序员会看JDK源码, 不如直接标识出来, 省得再追加一步.

往复杂了想,  思维的先后顺序应该是先有接口定义, 后有实现类, 几个实现类写完之后发现很多重复代码, 应该在中间抽取出一个骨干抽象类,  AbstractMap是后出现的.
------解决方案--------------------
HashMap如果不实现Map接口,,如果以后AbstractMap类被废弃,HashMap是谁的子类

HashMap如果实现Map接口,不管AbstractMap存不存在,它都是遵循协议的,有AbstractMap的时候HashMap可以多用几个方法,没有AbstractMap,HashMap还能自己写。