2011-03-30 2 views
2

나는 Args 클래스,이 클래스가 HashMap 확장을 가지고 있으며,이 몇 가지 방법 얻을 수있는 방법 : 지금내가 링크의 HashMap에게

public class Args extends HashMap{ 
    public myMethod_1(){ 
     //... 
    } 
    public myMethod_2(){ 
     //... 
    } 
    public myMethod_3(){ 
     //... 
    } 
} 

를, 내가 링크 된 Args 인스턴스를 얻을 싶어하지만, LinkedHashMap exnted

나는 인터페이스

내가 링크 Args 인스턴스를 얻을 수

Args을 변경할 수 없습니다 또한, LinkedHashMap에 인수 된 exnteds을 변경할 수 없습니다?

그렇지 않은 경우 가장 좋은 방법을 얻으려면 LinkedArgs을 얻으시겠습니까? (반복하지 않음 myMethod_1-3)

+2

LinkedHashMap을 확장하기 위해 Arg을 변경할 수없는 이유는 무엇입니까? LinkedHashMap이 HashMap을 확장한다는 것을 알고 있습니까? 따라서 LinkedHashMap을 확장하도록 Args를 변경하면 HashMap에서 제공하는 기능을 포기할 필요가 없습니다. – Asaph

+2

당신이 무엇을 할 것인지 명확히 할 수 있습니까? 왜 HashMap 대신 LinkedHashMap을 확장 할 수 없는지 이해가 안됩니다. – Suroot

답변

2

간단한 해결책은 을 확장하여 LinkedHashMap으로 변경하는 것입니다. 즉 옵션, 그 다음 최상의 솔루션으로 Map API에있는 모든 메소드 (그리고 다른 사람을 Map을 구현하기 위해 Args을 변경하고 위임하는 것입니다 수없는 경우

(나는 ... 당신이 할 수없는 것을 알고) 필수)을 개인 LinkedHashMap 인스턴스에 추가합니다.

옵션이 아닌 경우 확장자 HashMap과 동일한 작업을 수행 할 수 있습니다. 기본적으로 부모의 모든 메서드를 HashMap으로 재정의하고 해당 작업을 개인 LinkedHashMap 인스턴스에 위임합니다. (UGLY이지만 작동합니다 ... 각 Args 객체는 초기화되고 사용되지 않는 속성 집합을 가지고 있습니다 ...)

관련 문제