我正在为公共类中的Hashmap创建工厂方法。
public class MyList {
Hashmap list = newMap(); //is this function called properly here?
public static final Hashmap newMap() {
return Hashmap(String, boolean);
}
}
以最简单的方式,如果要为键/值对保留字符串和布尔值,如何设置工厂方法?
我对语法感到困惑。
我只想返回一个新的Hashmap对象,并将newMap()用作工厂方法
答案 0 :(得分:1)
HashMap
具有用于键和值的通用类型,因此您需要将这些类型指定为
public static HashMap<String, Boolean> newMap() {
// ...
}
在内部,您将创建地图
return new HashMap<String, Boolean>();
return new HashMap<>();
一样使用菱形运算符(因为类型已经在签名中您还可以将类型作为参数传递
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>
是创建并更新为工厂方法要求的实例。
例如。在下面的示例中,我们只是将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);
}