我有一个类,其中的对象是使用字符串映射和字符串映射以及扩展Number的泛型类型构建的,如下所示:
public MyClass(Map<String,HashMap<String,? extends Number>){ ... }
我还有另一个扩展数字的类:
public Class MySecondClass extends Number { ... }
在外部方法中,我创建了一个由字符串和字符串映射以及MySecondClass对象组成的映射
public void myMethod() {
...
Map<String, HashMap<String, MySecondClass> foo = ...;
...
}
看起来我可以使用foo map调用MyClass
的构造函数而没有任何问题,因为MySecondClass
扩展了Number,但是我得到了持续获取和错误的说法:
MyClass(java.util.Map<java.lang.String, java.util.HashMap<java.lang.String, ? extends java.lang.Number>>) in MyClass cannot be applied
to (java.util.Map<java.lang.String, java.util.HashMap<java.lang.String, MySecondClass>>)
我无法理解为什么..我还有其他方法使用相似的映射调用相同的构造函数但不使用MySecondClass
他们使用显然扩展Number的Long或Integer,这些类之间不应该有区别因为他们都扩大了数字..我做错了什么?
我使用的是java 10