Ошибка, когда пользовательский класс расширяет число - PullRequest
0 голосов
/ 16 мая 2018

У меня есть класс, объекты которого создаются с помощью карты строк и карт строк и универсального типа, расширяющего Number, например:

public MyClass(Map<String,HashMap<String,? extends Number>){ ... }

У меня также есть другой класс, который расширяет число:

public Class MySecondClass extends Number { ... }

Во внешнем методе я создаю карту из строки и карты строк и объектов MySecondClass

public void myMethod() {
    ...
    Map<String, HashMap<String, MySecondClass> foo = ...;
    ...
    }

И похоже, что я мог бы без проблем вызвать конструктор MyClass, используя карту foo, потому что 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 они используют Long или Integer, который явно расширяет Number, и между этими классами не должно быть различий, потому что все они продлить номер .. что я сделал не так?

Я использую Java 10

...