Чтение кода других людей, я видел много:
List<E> ints = new ArrayList<E>();
Map<K, V> map = new HashMap<K, V>();
Мой вопрос: какова точка/преимущество создания их таким образом, а не:
ArrayList<E> ints = new ArrayList<E>();
HashMap<K, V> map = new HashMap<K, V>();
Что также делает странным то, что я никогда не видел ничего подобного:
CharSequence s = new String("String");
или
OutputStream out = new PrintStream(OutputStream);
Дубликаты (первой части вопроса):
Когда/зачем использовать/определить интерфейс
Использовать интерфейс или тип для определения переменной в java?
Когда я должен использовать интерфейс в java?
почему создаются интерфейсы вместо их реализаций для каждого класса
В чем разница между этими двумя объявлениями переменной java?