Когда мы используем тип ссылки и тип объекта [дубликата]

1

У меня есть сомнения относительно ArrayList и List. В этом случае мы должны использовать ArraryList, например:

ArrayList obj = new ArrayList();

И в этом случае мы должны использовать интерфейс списка.

List obj =  new ArrayList();

В чем разница между ними?

  • 0
    Поиск по SO предоставит больше информации о коде, чем поиск по сайту
  • 0
    Примечание не по теме: вы всегда должны включать тип для List или ArrayList, т.е. ArrayList<Object> obj = new ArrayList<>(); или List <Object> obj = new List <> (); `
Показать ещё 1 комментарий
Теги:

2 ответа

1

Если вам нужно вызвать метод, специфичный для реализации, используйте реализацию.

Когда вы пишете:

List obj =  new ... //ArrayList() or LinkedList()

компилятор знает, что obj - это List. Следовательно, вы не можете использовать методы, специфичные для одной реализации.

Например, если вам нужно получить доступ к последнему элементу LinkedList, вам необходимо объявить его следующим образом:

LinkedList = obj = new LinkedList();

Теперь obj является LinkedList. Следовательно, вы можете использовать obj.last().

  • 0
    Можете ли вы сказать мне тот же пример в сценарии ArrayList. когда я пишу ArrayList obj = new ArrayList (); и List lst = new ArrayList (); В обоих случаях я могу получить один и тот же метод. тогда в чем разница?
  • 0
    @ArvindVishwakarma Я не знаю ни одного метода, специфичного для ArrayList. Эта реализация - только список, сохраненный в массиве.
0

Если вы хотите использовать методы, специфичные для ArrayList, вы хотите получить первый случай, иначе лучше использовать второй случай. Во втором случае вам не нужно менять столько, если вы хотите переключиться на другую реализацию List.

  • 0
    Не против !!! Дайте больше информации об этом :(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню