Видел что именно так надо объявлять и так правильней.
List<String> list = new LinkedList<>();
Но когда через объект вызываю метод: addFirst()
, то идея сама подставляет вот такую конструкцию:
((LinkedList<String>) list).addFirst();
Почему я просто не могу сделать list.addFirst()
подскажите пожалуйста!
Заметил что работает только если объявить вот так:
LinkedList<String> list = new LinkedList<>();
Но как я уже показывал выше правильней использовать вот такую конструкцию:
List<String> list = new LinkedList<>();
Поправьте если ошибаюсь
TL;DR;
Deque<String> list = new LinkedList<>();
Нужно использовать родителя самого высокого уровня, функциональности которого достаточно для решения задачи. Особенно это важно при создании библиотеки.
Т.е. вы думаете "а что мне вообще нужно от этого объекта", исходя из этого уже и принимаете решение. Например Map<K,V>
при использовании почти всегда всё равно HashMap TreeMap
или иное. Поэтому пишем Map
.
В данном примере из класса LinkedList
используется метод addFirst
который был получен из интерфейса Deque
. Если вы хотите использовать именно его (не add(int index, E element)
) то пишите Deque
если для вас критичен произвольный доступ (по фрагменту кода это непонятно), то пишите LinkedList
Аренда удаленного сервера: цены, провайдеры и условия. Руководство для начинающих
Как считывать нажатия кнопок в виртуальной клавиатуре телефона? К примеру я нажал "Enter" и появился тоаст "Вы нажали ентер"Либо нажал на какой-нибудь...
Вот задача Есть поле из клеток по средине которого находится роботРобот умеет выполнять 4 команды: двигаться на 1 клетку в сторону: R (right), L (left),...
Мне надо подключиться к базе данных из NetbeansЯ ввожу все данные которые требуются