Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 1个变量的2种不同可能类型_Java_Variables_Types - Fatal编程技术网

Java 1个变量的2种不同可能类型

Java 1个变量的2种不同可能类型,java,variables,types,Java,Variables,Types,我想在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

我想在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
s,可以这样引用

Map<MyKey, MyValue> imp = null;
if (b) {
   imp = new HashMap<MyKey, MyValue>();
} else {
   imp = new LinkedHashMap<MyKey, MyValue>();
}
Map imp=null;
如果(b){
imp=新的HashMap();
}否则{
imp=新LinkedHashMap();
}

只需将
imp
声明为
Map
,使用所需的类型参数进行参数化,并将其指定为具体类型

HashMap
LinkedHashMap
都是
Map
s,可以这样引用

Map<MyKey, MyValue> imp = null;
if (b) {
   imp = new HashMap<MyKey, MyValue>();
} else {
   imp = new LinkedHashMap<MyKey, MyValue>();
}
Map imp=null;
如果(b){
imp=新的HashMap();
}否则{
imp=新LinkedHashMap();
}
我会为之努力的

Map imp=b?新建HashMap():新建LinkedHashMap()

注意菱形操作符的用法:不需要长时间拼写泛型

以这种方式使用三元条件运算符意味着
imp
在声明和初始化之间永远不会处于未定义的状态。

我想

Map imp=b?新建HashMap():新建LinkedHashMap()

注意菱形操作符的用法:不需要长时间拼写泛型


以这种方式使用三元条件运算符意味着
imp
在声明和初始化之间永远不会处于未定义状态。

查看集合中的继承树

正如您所看到的,这两个类都可以实现为映射

因此,您可以:

Map<FooKey, FooValue> implementedMap = null;
if (b) {
   implementedMap= new HashMap<FooKey, FooValue>();
} else {
   implementedMap= new LinkedHashMap<FooKey, FooValue>();
}
Map implementedMap=null;
如果(b){
implementedMap=新HashMap();
}否则{
implementedMap=新建LinkedHashMap();
}

查看集合中的继承树

正如您所看到的,这两个类都可以实现为映射

因此,您可以:

Map<FooKey, FooValue> implementedMap = null;
if (b) {
   implementedMap= new HashMap<FooKey, FooValue>();
} else {
   implementedMap= new LinkedHashMap<FooKey, FooValue>();
}
Map implementedMap=null;
如果(b){
implementedMap=新HashMap();
}否则{
implementedMap=新建LinkedHashMap();
}

接口
interfaz
。除此之外,
Map imp
还有什么问题?
接口
不是
interfaz
。除此之外,
Map imp
有什么问题吗?如果
imp
永远不能
null
我就不会初始化它。如果
imp
永远不能
null
我就不会初始化它。谢谢大家,如果我以前问过,我节省了很多时间谢谢大家,如果我以前问过,我节省了很多时间