2009-10-23 5 views
2

HashMap의 소스 코드에서 equals 메서드를 final로 나열했습니다. 왜 그것을 재정의 할 때 컴파일 오류가 발생하지 않습니까? - Map.Entry로에 전달 된 참조를 사용하려고하는 방법을 살펴 자체가 HashMap.Entry에 대한 equals 메소드하지 HashMap자바에서 HashMap equals 메서드 재정의

public final boolean equals(Object o) { 
    if (!(o instanceof Map.Entry)) 
     return false; 
    Map.Entry e = (Map.Entry)o; 
    Object k1 = getKey(); 
    Object k2 = e.getKey(); 
    if (k1 == k2 || (k1 != null && k1.equals(k2))) { 
     Object v1 = getValue(); 
     Object v2 = e.getValue(); 
     if (v1 == v2 || (v1 != null && v1.equals(v2))) 
      return true; 
    } 
    return false; 
} 

답변

13

:

public class Test extends HashMap<Object, Object> { 

    @Override 
    public boolean equals(Object o) { 
     return false; 
    } 
} 

자바의 HashMap는 방법과 동일합니다.