我想在Java中完成这个:
nested functions not implemented in this context
boolean b;
if (b) {
//I want that a variable "imp" be of type HashMap
} else {
//I whant that a variable "imp" be of type LinkedHashMap
}
和HashMap
是接口地图的实现。
我认为使用元组LinkedHashMap
但这会弄脏很多代码。
答案 0 :(得分:3)
只需将imp
声明为Map
,使用所需的类型参数进行参数化,然后使用具体类型进行分配。
HashMap
和LinkedHashMap
都是Map
,可以这样引用。
Map<MyKey, MyValue> imp = null;
if (b) {
imp = new HashMap<MyKey, MyValue>();
} else {
imp = new LinkedHashMap<MyKey, MyValue>();
}
答案 1 :(得分:1)
我正在拍摄
Map<MyKey, MyValue> imp = b ? new HashMap<>() : new LinkedHashMap<>();
请注意使用钻石操作符:不需要长时间拼写泛型。
以这种方式使用三元条件运算符意味着imp
在声明和初始化之间永远不会处于未定义状态。
答案 2 :(得分:0)