Как создать конструктор для Hashmapв заводском методе? - PullRequest
0 голосов
/ 19 декабря 2018

Я создаю фабричный метод для Hashmap в публичном классе.

 public class MyList {
    Hashmap list = newMap();   //is this function called properly here?

public static final Hashmap newMap() {
    return Hashmap(String, boolean);

  }
 }

Как проще всего настроить фабричный метод, если он должен содержать строку и логическое значение дляпара ключ / значение?

Я застрял в синтаксисе.

Я просто хочу вернуть новый объект Hashmap и использовать newMap () в качестве фабричного метода

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Чтобы получить общий фабричный метод с T и U в качестве типа класса, вы можете перейти к

public static <T,U> HashMap<T,U> factoryHashMap(T t , U u ){
         HashMap<T,U> tuHashMap = new HashMap<T,U>();
         // do stuff
        return tuHashMap;
    } 

Здесь T t, Uu - необязательные параметры.Вы также можете иметь пустые параметры.

Если вы наблюдаете перед возвращаемым типом HashMap<T,U> в функции, мы поставили <T,U>, чтобы обозначить, что это универсальный метод

здесь T и Uможет быть любым допустимым типом класса.В вашем случае это String, а Boolean

new HashMap<T,U> - это экземпляр, который создается и обновляется в соответствии с требованиями вашего фабричного метода.

например.В приведенном ниже примере мы просто добавляем t и u к карте, если они не равны NULL, возвращая пустой HashMap

public static <T, U> HashMap<T, U> factoryHashMap(T t, U u) {
    HashMap<T, U> tuHashMap = new HashMap<T, U>();
    if (t != null && u != null)
        tuHashMap.put(t, u);
    return tuHashMap;
}

метод драйвера:

public static void main(String args[] ) throws Exception {
        HashMap<String, Boolean> myMap = factoryHashMap("isItCool?",false);
}
0 голосов
/ 19 декабря 2018
  1. HashMap имеет общие типы для ключа и значения, поэтому вам нужно указать эти типы как

    public static HashMap<String, Boolean> newMap() {
        // ...
    }
    
  2. А внутри вы создадитекарта как

    • return new HashMap<String, Boolean>();
    • или просто как return new HashMap<>(); с использованием оператора diamond (тип уже указан в подписи
  3. Вы также можете передать тип в качестве параметра

    public static <K, V> HashMap<K, V> newMap(Class<K> classKey, Class<V> classValue) {
        return new HashMap<>();
    }
    

Использовать

public static void main(String[] args) {
    Map<String, Boolean> map = newMap();
    Map<Integer, Double> mapID = newMap(Integer.class, Double.class);
}
...