public static void printList(List<Integer> list) {
for (int i = 0; i<list.size(); i++) {
System.out.println(list.get(i));
}
}
Думал что List это уловка и поменял сразу ее на ArrayList, потом долго не мог найти ошибку, пока не прочитал замечание от ментора что мол поищите метод public static void printList(List<Integer> list), опять подумал что ошибка, но все-таки решил попробовать с List и все заработало.
Мы же указываем в качестве переменной массив, считываем и выводим данные из массива, почему нужно указыать как тип переменной "List" а не "ArrayList" ?
Спасибо за ответ
Oleg Zaytsev
24 уровень
В чем разница List и ArrayList
Архивный
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Sergey MorozExpert
20 февраля 2019, 02:16решение
Можно и ArrayList. НО:
1. В задании метод уже предпрописан именно с параметром типа List.
2. List - это интерфейс, который имеет множество реализаций (в том числе и ArrayList среди них). Указание в параметре именно интерфейса, а не конкретной реализации делает код более гибким. Представим такую ситуацию: мы прописали в параметре жестко ArrayList. И вот в будущем может быть пересмотрена логика и понадобится передать в этот метод допустим LinkedList. Тут-то всё и поломается - метод не принимает такой тип и нужно рефакторить сам метод плюс весь код, где он использовался. А если мы изначально не будем ограничивать параметр какой-либо конкретной реализацией List-а, то сможем запихивать в этот метод любой объект, реализующий интерфейс List - от библиотечных до самописных велосипедов.
Образно говоря
так мы строим завод, который может выпускать только ланосы
а так - завод, который может выпускать любые авто - хоть ланосы, хоть теслы, хоть какие угодно
+4
Oleg Zaytsev
20 февраля 2019, 13:42
Спасибо
0