В чем разница методов написания кода:
Через интерфейс
List:List<Integer> name = new ArrayList<Integer>();Через класс
ArrayList:ArrayList<Integer> name = new ArrayList<Integer>();
Ок, если не ответили по ссылке в комментарии, тогда постараюсь простыми словами (?).
Полиморфизм - возможность иметь несколько форм реализаций, но какую конкретно форму реализации интерфейса (в вашем случае List) использовать именно сейчас, вы указываете справа от оператора new - ArrayList.
Возьмем для сравнения пару часто сравниваемых классов - это ArrayList и LinkedList. Они имеют много общих методов, т.к. оба реализуют интерфейс List.
Например, у вас есть метод, который перебирает элементы в списке, производит какие-то действия внутри.
Когда вы проектировали ваше приложение, вы работали с LinkedList, но на больших данных заметили, что скорость прохождения по списку упала (такое бывает, но не точно) и решили перейти на ArrayList.
Ваш метод был и остается всегда:
public void sortList(List<Integer> list) {
// your code...
}
Таким образом инициализацию списка мы можете менять в одном месте, вам не придется менять ее везде.
List<Integer> list = new LinkedList<>();
просто меняете на:
List<Integer> list = new ArrayList<>();
преимущество данного метода я заметил в аргументе метода, а именно, что можно указать List<Integer> и туда паредавать ArrayList<Integer> либо LinkedList<Integer>. Но если мне требуется создать просто единожды ArrayList, то принципиального различия в методах - 1) List<Integer> name = new ArrayList<>(); и 2) ArrayList<Integer> name = new ArrayList<>(); нету, я правильно понимаю?
– West Side
Mar 02 '20 at 20:37
List<Integer> name = new ArrayList<Integer>();– West Side Mar 02 '20 at 14:06List<Integer> name = new ArrayList<Integer>();- видно, когда правлю сообщение, а показывается в итоге после сохранения так, как показывается – West Side Mar 02 '20 at 14:11new ArrayList<Integer>(), аList<Integer> name =иArrayList<Integer> name =уже создание переменной, куда ссылка на объект будет положена, т.е. это инициализация. В обоих случаях будет объект ArrayList, ноListявляется общим типом и в него можно положить и другие объекты, что реализуютList, а не толькоArrayList. Читайте: Чем отличается List от ArrayList? – gil9red Mar 02 '20 at 14:31List<Integer> name- переменная, то есть, грубо говоря, коробка с надписьюместо для List<Integer> name, вот тутname = new ArrayList<Integer>();вы помещаете в эту коробкуArrayList<Integer>();. Ваши примеры отличаются только надписями на коробке, содержимое же коробок там одинаковое. – tym32167 Mar 02 '20 at 14:33