Первый показанный вами вариант работает только для ArrayLists
, поэтому он не подходит, если вы хотите поддерживать любой тип List
. Если вы хотите поддерживать любой тип List
, вы должны преобразовать (не разыграть) его в ArrayList
.
Я думаю, что может быть некоторая путаница, потому что List
и ArrayList
так тесно связаны (по наследству). Это только совпадение, что тип параметра и класс, для которого мы должны вызвать функцию, связаны таким образом.
Если немного абстрагироваться от требований:
- Нам нужно воздействовать на ряд значений
- Нам нужно использовать trimToSize () на
ряд значений.
Если бы значения приходили в виде массива, не могло быть и речи, кроме как создать новый ArrayList
со значениями из массива и затем использовать trimToSize () , потому что приведение не было бы вариантом , Просто не повезло, что метод, который нам нужен trimToSize () , находится в подклассе List
, и автор хочет передать значения как List
.