У меня есть класс, объекты которого создаются с помощью карты строк и карт строк и универсального типа, расширяющего 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