java泛型方法的equals是如何比较的

class A <K,V> extends abstractMap<K,V>{
LinkedList<Map.Entry<K,V>> m = new LinkedList<Map.Entry<K,V>>[100];
public V get(Object key){
int i = Math.abs(key.hashCode())%100;
if(me[i] == null)
return null;
for(Map.Entry<K,V> me : m[i]){
if(me.getKey().equals(key))
return me.getValue();
}
return null;
这里泛型被当做Object,那为什么两个Object可以正确的比较?书上说Object的equals比较的是地址,那结果应该永远是false才对啊

java里面的泛型是假的没错,泛型的出现更大的作用是为了编写检查。
java有多态的特性!调用对象的方法时候,取决于这个方法的实际实现。就假如说,你写了Object s1 = "abc";Object s2 = "abc";然后调用二者的equals方法时,s1,s2虽然声明为Object,但其实际的类型为字符串(String),并且字符串重写了equals方法,所以s1.equals(s2)实际调用的是由String.class 内提供的方法。
调用哪一个方法取决于调用的时候实际对象究竟是谁,并且还要注意他有没有重写父类的方法。
温馨提示:答案为网友推荐,仅供参考
相似回答