2010-02-19 2 views
11

HashMap이 AbstractMap을 확장하고 Map을 구현하는 이유는 무엇입니까? AbstractMap은 Map을 구현하기 때문에 AbstractMap을 확장하지 못하고 있습니까?Java.util.HashMap - HashMap이 AbstractMap을 확장하고 Map을 구현하는 이유는 무엇입니까?

+1

본질적으로 같은 질문 'HashMap의지도 구현' http://stackoverflow.com/questions/2165204/why-does-linkedhashsete-extend-hashsete-and-implement-sete를 - - 짧은 버전 :이 중복성은 Javadoc 생성 방법에 영향을 미칩니다. –

+0

나는 조사를 촉구 받았고 실제로 Javadoc은 문제가 아니었다. 새로운 짧은 버전 : 그것은 단지 실수였습니다. –

+0

ㅎ. 나는 오늘 이것에 대해서도 물었다. 나는 그것이 "선의의 실수"라고 말했고, 원래의 추론은 내가 대답 한 인터페이스와 구현의 관계라고 들었습니다. –

답변

5

중복되어 있습니다. 나는 그것이 "문서화"이유 때문에 완료되었다고 생각합니다. HashMap은 Map을 구현하고, 당신은 그것에 의존 할 수 있습니다. 그것은 AbstractMap을 확장한다는 사실은 틀림없이 단지 구현 세부 사항입니다. (그것의 HashMap의 향후 버전은 AbstractMap을 연장하지 않을 것이라고 매우 가능성 비록이 아마 의 HashMap가 AbstractMap에 할당 될 것으로 예상하고 거기에 몇 가지 코드. 이후부터)

0

그것은 중복,하지만 다치게하지 않습니다. 나중에 MapAbstractMap에 구현하지 않으려면 계속 작동합니다.

+3

그게 큰 변화가 아니라면 누군가가'Map map = objectOfTypeAbstractMap'을했을 것입니다. –

0

또 하나의 사실은 AbstractMap이 구현 세부 사항이라는 것입니다. 오라클의 JDK의 차기 버전에는 없을 수 있습니다. 현재 버전의 IBM JDK에서는 존재하지 않을 수 있습니다. 그러나 존재하는지 여부에 관계없이 HashMap은 항상 List 계약을 준수해야합니다. 따라서 명시 적으로 지정하여 클래스 선언에서 캡처이 같은

관련 문제