如何在工厂方法中为 Hashmap<String Boolean> 创建构造函数?

How to create constructor for Hashmap<String Boolean> in a factory method?

我正在 public class.

中为 Hashmap 创建一个工厂方法
 public class MyList {
    Hashmap list = newMap();   //is this function called properly here?

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

  }
 }

最简单的,如果工厂方法是为key/value对保存字符串和布尔值,我该如何设置?

我被语法困住了。

我只想return一个新的Hashmap对象并使用newMap()作为工厂方法

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

要获得 T 和 U 作为 Class 类型的通用工厂方法,您可以继续使用

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是可选参数。你也可以有空参数。

如果您在函数中的 return 类型之前观察到 HashMap<T,U>,我们已经放置了 <T,U> 来表示这是一个泛型方法

此处 T 和 U 可以是任何有效的 class 类型。在您的情况下,它是 String 和 Boolean

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

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