Прежде, чем все вы сожжете меня живым, я должен сказать, что у меня много раз задавался этот вопрос, и я все еще не понимаю разницы между List <Object> и List <? >
Все прочитанные мной книги говорят, что в Java каждый класс является неявным подклассом Object.
Однако я увидел здесь следующий код:
public static void printList(List<Object> list) {
for (Object elem : list)
System.out.println(elem + " ");
System.out.println();
}
Этот код неправильный (намеренно для образовательных целей), и, по мнению автора, причина такова:
[...] печатает только список экземпляров объекта; он не может печатать List <Integer> , List <String> , List <Double> и т.д., поскольку они не являются подтипами List <Object>
Решение:
public static void printList(List<?> list) {
for (Object elem: list)
System.out.print(elem + " ");
System.out.println();
}
Как вы можете видеть, единственная разница - это первая строка:
public static void printList(List<Object> list) {
public static void printList(List<?> list) {
Вот почему мой вопрос: какая разница между List <Object> и List <? >
В конце концов, это суперкласс класса или нет?
Если кто-то может помочь мне с простым объяснением (я новичок в Java), я буду признателен.
Спасибо заранее.