Добавление подтипа в общий список

Я пытаюсь добавить исключение в карту, содержащую строку в качестве ключа и список исключений в качестве значений... как показано ниже. Чего я пытаюсь добиться, так это создать общий метод, который может принимать карту с ключом в виде строки и список, который может содержать исключение любого типа, если ключ того же типа, добавьте исключение в этот конкретный список.

public static void addToMap(Map<String,List<? extends Exception>> exceptionMap,String nodeKey ,Exception exception){
exceptionMap.computeIfAbsent(nodeKey ,K->new LinkedList<Exception>).add(exception);

Примечание. Я могу добавить исключения для двух разных методов util по отдельности... но я хочу, чтобы он был более общим для одного метода util, как показано выше...

Я не могу добавить эти два разных исключения в общий метод util, я не знаю, где я ошибаюсь... Любая помощь приветствуется

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
159
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Здесь не следует использовать подстановочные знаки. Используйте подстановочные знаки, только если вам не важен точный тип. Но здесь вы заботитесь о точном типе списка исключений. А именно, эти два ??? должны быть совместимы друг с другом:

void addToExceptionMap(Map<String, List<???>> exceptionMap, String errorLevel, ??? exception)

Последний параметр не может быть любым Exception, а тип списка не может быть любым Exception. Вы не можете добавить NullPointerException в список IndexOutOfRangeExceptions, не так ли? Эти два типа связаны.

Вы должны использовать общий здесь:

public static <T extends Exception> void addToExceptionMap(Map<String, List<T>> exceptionMap, String errorLevel, T exception){
    exceptionMap.computeIfAbsent(errorLevel,K->new LinkedList<T>()).add(exception);
}

Другие вопросы по теме