[英]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.