自定义类扩展Number时出错

时间:2018-05-16 17:24:17

标签: java class extends

我有一个类,其中的对象是使用字符串映射和字符串映射以及扩展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

0 个答案:

没有答案