Возможный дубликат:
Что означает "программировать интерфейс" ?
Я заметил, что некоторым людям нравится объявлять объект как один из интерфейсов, который он реализует , хотя в рамках этой переменной нет необходимости рассматривать его как интерфейс, например. нет внешнего API, который ожидает интерфейс.
Например:
Map<String, Object> someMap = new HashMap<String, Object>();
Или вы можете просто сделать
HashMap<String, Object> someMap = new HashMap<String, Object>();
и вообще не импортировать java.util.Map
.
В чем преимущества объявления его через интерфейс (сначала выше) в отличие от самого класса (второй выше)?
Спасибо