PDF 课件和源代码下载地址:
https://gitee.com/geektime-geekbang/LetsJava
作者回复: get的参数不需要是泛型类型,因为只需要用到equals和hashcode方法。返回值类型是泛型类型
作者回复: 对的,没有用泛型是因为用不到,本身用到的方法就是Object里自带的equals和hashcode而已。
作者回复: 一个原因是kv就是以entry的方式存储在map里的。直接遍历可迭代的map,也要知道哪个key对应到哪个value,其实还是要有一个类封装起key和value。
作者回复: 这个问题我n年前也跟同事讨论过。当时的结论是,如果用泛型,那么会多出一次类型转换的操作。当然这点开销是无所谓的。还有一个隐患是类型不匹配的时候会引起classcastexception。
作者回复: Q1:因为key只需要hashcode和equals方法。这两个方法在Object里都是有的。 Q2:for的是Entry的Set,不是Entry。实例化出来的也是Entry接口的实现类的实例。只是这个实例是用Entry类型的引用指着。