Ошибка при передаче коллекции ограниченных символов в Java

1

Для ниже структуры класса:

class BaseClass{}
   class A extends BaseClass{}
   class B extends BaseClass{}

У меня есть этот метод в основном:

public static void goThroughMap(Map<String,Collection<? extends BaseClass>> myMap) {}

Теперь, чтобы вызвать этот метод, я делаю что-то вроде:

Map<String,Collection<B>> myMap = new HashMap<>();
goThroughMap(myMap); // is causing a compile time error

Ошибка:

The method goThroughMap(Map<String,Collection<? extends BaseClass>>)  is not applicable for the arguments (Map<String,Collection<B>>)

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

Я видел связанные вопросы другими пользователями (см. Ссылки ниже), но ни один из них не может решить проблему здесь:

  1. PECS в дженериках
  2. Верхний и нижний вопрос
  • 1
    Пожалуйста, покажите, как вы объявили B
  • 0
    Какую ошибку вы получаете?
Теги:
generics

2 ответа

0
Лучший ответ

Вы можете использовать следующее объявление для своего метода:

public static void goThroughMap(Map<String,? extends Collection<? extends BaseClass>> myMap)

Вы можете обратиться к этой ссылке для получения более подробной информации о таких типах: Общие вопросы

  • 0
    Это работает для меня. Переходя по ссылке, чтобы понять больше об этом.
0

Вы должны правильно настроить свой метод:

public static <T extends BaseClass> void goThroughMap(Map<String, Collection<T>> myMap) {
  ...
}
  • 0
    Можете ли вы указать, что именно не так с моими заявлениями. Ваши ответы и ответы Скруджа МакДжа работают на меня.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню