如何在工厂方法中为Hashmap <string boolean =“”>创建构造函数?

时间:2018-12-19 17:54:49

标签: java hashmap factory

我正在为公共类中的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 :(得分:1)

  1. HashMap具有用于键和值的通用类型,因此您需要将这些类型指定为

    public static HashMap<String, Boolean> newMap() {
        // ...
    }
    
  2. 在内部,您将创建地图

    • return new HashMap<String, Boolean>();
    • 或与return new HashMap<>();一样使用菱形运算符(因为类型已经在签名中
  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);
}

答案 1 :(得分:0)

要获取具有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可以是任何有效的类类型。在您的情况下,它是字符串和布尔值

new HashMap<T,U>是创建并更新为工厂方法要求的实例。

例如。在下面的示例中,我们只是将tu添加到地图,如果它们不为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);
}