Что мы говорим компилятору?
опубликовал новую статью, ‘Что
мы говорим компилятору?‘
Java когда мы пишем такой код:
List myList = new
ArrayList()<>;
Когда мы пишем такой код:
List<String> myList = new
ArrayList<>();
мы создаем объект типа ArrayList
, но не
объект типа List
. Дело в том, что
List
является интерфейсом, а
не конкретным классом, поэтому его нельзя
напрямую инстанцировать. Интерфейсы в Java
представляют собой набор методов без их
реализации, а классы, реализующие эти
интерфейсы (например, ArrayList
или
LinkedList
), предоставляют конкретную
реализацию этих методов.
Почему интерфейс нельзя
инстанцировать?
Интерфейс — это контракт, который
определяет, какие методы должен
реализовать класс, но не указывает, как
именно они должны быть реализованы. Это
объясняет, почему мы не можем создать
экземпляр интерфейса напрямую: он не
содержит кода для выполнения своих
методов.
Почему используется
List<String>
, а не
ArrayList<String>
?
Использование типа List<String>
для
переменной myList
обеспечивает
гибкость кода. Мы можем заменить
реализацию, например, на LinkedList
,
Vector
, или другую реализацию
List
без изменения кода в других
местах, которые работают с myList
.
Таким образом, при написании
List<String> myList = new ArrayList<>();
мы
говорим компилятору:
- “Используй интерфейс
List
для определения того, какие методы
доступны дляmyList
.” - “Создай конкретный объект типа
ArrayList
, который реализует интерфейс
List
.”
Вы можете просмотреть последнюю запись по
адресу
https://javatutor.eu/%d1%87%d1%82%d0%be-%d0%bc%d1%8b-%d0%b3%d0%be%d0%b2%d0%be%d1%80%d0%b8%d0%bc-%d0%ba%d0%be%d0%bc%d0%bf%d0%b8%d0%bb%d1%8f%d1%82%d0%be%d1%80%d1%83/?utm_source=subscribe2&utm_medium=email&utm_campaign=postnotify&utm_id=1247&utm_title=%D0%A7%D1%82%D0%BE%20%D0%BC%D1%8B%20%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B8%D0%BC%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D1%83%3F
Вы получили это письмо, так как просили
уведомлять вас о появлении новых записей.
С уважением,
JavaTutor.eu
webmaster@javatutor.eu