2012-04-03 2 views
0

나는 "UnsuportedOperationException"얻을 코드를 실행할 때 나는 데이터 구조가 매개 변수 ::여러 생성자

DictionaryI<IPAddress,String> ipD; //declaring main structure using interface 

// Constructor, the type of dictionary to use (hash, linkedlist, array) 
// and the initial size of the supporting dictionary 
    public IPManager(String dictionaryType, int initialSize){ 
     if(st1.equals(dictionaryType)) 
      ipD = new LinkedListDictionary(); 
     if(st2.equals(dictionaryType)) 
      ipD = new HashDictionary(initialSize); 
     if(st3.equals(dictionaryType)) 
      ipD = new ArrayDictionary(initialSize); 
     else 
      throw new UnsupportedOperationException(); 
    } 

에 문자열에 의해 결정됩니다 사용하는 생성자를 설정하기 위해 노력하고있어 내가 무엇을 넣든 상관없이 어떤 도움이나 올바른 방향으로 향한 점이 크게 감사 할 것입니다!

+0

st1, st2 및 st3을 제공하도록 신경을 씁니까? –

+0

st1 = "연결 목록" st2 = "해시" st3 = "배열" – JeffS

답변

6

확실한 대답은 코드가 throw까지 떨어질 것 st1st2를 들어

public IPManager(String dictionaryType, int initialSize){ 
    if(st1.equals(dictionaryType)) 
     ipD = new LinkedListDictionary(); 
    else if(st2.equals(dictionaryType)) 
     ipD = new HashDictionary(initialSize); 
    else if(st3.equals(dictionaryType)) 
     ipD = new ArrayDictionary(initialSize); 
    else 
     throw new UnsupportedOperationException(); 
} 

입니다 (코드는 자바에있다).

즉,이 방법은 일반적으로 좋지 않습니다. Java 컬렉션 인터페이스 (예 : Map<K,V>) 및 해당 구현 (HashMap, TreeMap 등)을 참조하십시오.

+1

원래 게시물을보고 'else'키워드를 사용하지 마십시오. –

+0

그리고 만약이 접근법을 고수하고 싶다면 적어도 하드 코딩 된 문자열 대신 사전 형식을위한 열거 형으로 바꾸는 것을 고려하십시오 – Robin

+0

이상하게도, 원래는 else로 시도해 보았습니다. 나는 너희들에게 물었다. (나는 이상하게도 IT 헬프 데스크에서 일하는 것이 이상하다. 내가 이전의 코드에도 문제가 있었음에도 불구하고). 학교 프로젝트 용이므로 Java 컬렉션을 사용할 수 없으며 데이터 구조를 직접 코딩해야합니다. 도움 주셔서 감사합니다. – JeffS