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());