[英]2 different possibles types for 1 variable
我想在Java中完全做到这一点:
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
是接口映射的实现。
我认为使用元组(HashMap, LinkedHashMap)
但这会弄脏很多代码。
只需将imp
声明为Map
,并使用所需的类型参数对其进行参数化,然后将其分配为具体类型。
HashMap
和LinkedHashMap
都是Map
,可以这样引用。
Map<MyKey, MyValue> imp = null;
if (b) {
imp = new HashMap<MyKey, MyValue>();
} else {
imp = new LinkedHashMap<MyKey, MyValue>();
}
我会为
Map<MyKey, MyValue> imp = b ? new HashMap<>() : new LinkedHashMap<>();
请注意使用Diamond运算符 :无需长期拼写泛型。
以这种方式使用三元条件运算符意味着imp
在声明和初始化之间永远不会处于未定义状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.