У меня есть следующий общий тип:
public class Library<T> {}
Мне нужно поместить каждый универсальный тип в список, например:
ArrayList<Library<Photo>> listPhotoLibrary
= new ArrayList<Library<Photo>>();
ArrayList<Library<Video>> listVideoLibrary
= new ArrayList<Library<Video>>();
Затем мне нужно поместить этот список в общий список. Сначала я попробовал это:
ArrayList<Library<?>> listTopLibrary = new ArrayList<Library<?>>();
Приведенный выше код позволил мне добавить все библиотеки в плоский список. Однако это не то, чего я хочу. Я хочу, чтобы список типизированных библиотек был в другом списке. Например, индекс 0 — это список библиотек видео, индекс 1 — список библиотек фотографий и так далее. Я попытался сделать это ниже:
ArrayList<ArrayList<Library<?>>> listTopLibrary
= new ArrayList<ArrayList<Library<?>>>();
Это не работает. Когда я пытаюсь добавить в список, он говорит мне:
The method add(ArrayList<Library<?>>) in the type ArrayList<ArrayList<Library<?>>>
is not applicable for the arguments (ArrayList<Library<Photo>>)
Любая идея, почему компилятор жалуется? И если есть способ обойти это?