Несколько Конструкторов с одинаковыми аргументами - PullRequest
0 голосов
/ 03 апреля 2012

Я пытаюсь настроить конструктор, в котором используемая структура данных будет определяться строкой в ​​параметре ::

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();
    }

. При выполнении кода я получаю "UnsuportedOperationException", независимо от того, чтоЯ вставил. Любая помощь или точка в правильном направлении будет принята с благодарностью!(Код на Java)

1 Ответ

6 голосов
/ 03 апреля 2012

Очевидный ответ:

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();
}

Для st1 и st2 ваш код будет падать до throw.

Тем не менее, этот подход, как правило, плох. Для справки взгляните на интерфейсы коллекции Java (например, Map<K,V>) и его реализации (HashMap, TreeMap и т. Д.).

...