Помните, что List<T>
является интерфейсом . Таким образом, передача списка в качестве аргумента делает ваш код более гибким, поскольку он не зависит от конкретной реализации List.
Так метод, который принимает List<String>
в качестве параметра на самом деле может принять ArrayList<String>
или LinkedList<String>
или любую другую реализацию интерфейса List
. Поэтому он может даже принять параметр типа MyList<String>
, если класс MyList
заявляет, что он реализует интерфейс List
. Преимущество этого в том, что если вы хотите перейти от использования ArrayList к LinkedList в другом месте вашего кода, этот метод все равно будет работать.
В отличие от этого метод, который принимает String[]
, может принимать только String[]
. Таким образом, у вас больше не будет возможности изменить способ хранения этих строк в другом месте вашего кода, не изменяя этот метод.
С точки зрения того, почему Google может использовать массивы в качестве параметров в своих API-интерфейсах, я думаю, что это действительно сводится к тому, что они используют их для.
Поэтому я не могу порекомендовать тот или иной. Это действительно зависит от того, что делает этот метод и что вы хотите делать с коллекцией. Для обзора ключевых различий между современными структурами программирования, такими как списки, и хорошими старомодными массивами, посмотрите на this answer.
Есть ли причина, по которой не оба? –
Если вам нужен список в качестве параметров, то идите на него, трудно сказать, что использовать, не зная фактического метода. – LordAnomander
Мое сомнение началось после того, как я заметил, что Google использует массив по большей части (фактически, я думаю, это для всех) его [Android API] (http://developer.android.com/reference/packages.html). Может быть, у них есть причина для этого, может быть, это правильный выбор. –