Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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 使用泛型将Long[]和Integer[]存储在同一HashMap中_Java_Arrays_Generics - Fatal编程技术网

Java 使用泛型将Long[]和Integer[]存储在同一HashMap中

Java 使用泛型将Long[]和Integer[]存储在同一HashMap中,java,arrays,generics,Java,Arrays,Generics,我需要将不同类型的数值数据数组存储在HashMap中。每个数组都是一个可测量的变量,例如温度,我需要将变量名称和单位存储在数组中,因此我创建了以下类: public class Variable <T> { public T[] array; public String name; public String unit; ......etc } 但我得到了一个错误: The method put(String, Variable<Numb

我需要将不同类型的数值数据数组存储在
HashMap
中。每个数组都是一个可测量的变量,例如温度,我需要将变量名称和单位存储在数组中,因此我创建了以下类:

public class Variable <T> {

    public T[] array;
    public String name;
    public String unit;

    ......etc

}
但我得到了一个错误:

The method put(String, Variable<Number>) in the type
HashMap<String,Variable<Number>> is not applicable for the arguments
(String, Variable<Long>)
方法将(字符串、变量)放入类型中
HashMap不适用于参数
(字符串,变量)

如何解决此问题?

即使
Long
Number
的子类,
Variable
也不是
Variable
的子类。此操作不适用于泛型

使用
HashMap可以帮助您:

Map<String, Variable<? extends Number>> map = new HashMap<>();
Variable<Long> varLong = new Variable<>(new Long[]{5L});
map.put("long", varLong);
Number number = map.get("long").array[0];
System.out.println(number.doubleValue());

Map看看这个,如果变量generic是T extends Number,它会工作吗?@BenBeri如果你在某处定义了T,它会工作。
Map<String, Variable<? extends Number>> map = new HashMap<>();
Variable<Long> varLong = new Variable<>(new Long[]{5L});
map.put("long", varLong);
Number number = map.get("long").array[0];
System.out.println(number.doubleValue());