Оператор as
является приведением. Но приведение не преобразовывает значение в данный тип; актер заявляет, что значение уже этого типа.
A LinkedList
не является ArrayList
, поэтому, когда вы заявите, что это так, компьютер сообщит вам о вашей ошибке - как вы видите!
Вместо этого вам нужно * преобразовать значение. Возможно, лучший способ - вызвать функцию расширения .toArrayList()
. В качестве альтернативы, вы можете явно вызвать конструктор: ArrayList(…)
.
(* Это предполагает, что вам на самом деле нужен ArrayList
. На практике обычно гораздо лучше ссылаться только на интерфейс, в данном случае List
или MutableList
. Как и в других комментариях, функция, которую вы используете объявлено, что вызов возвращает Collection
, текущая реализация может вернуть вам LinkedList
сейчас, но это может измениться, поэтому безопаснее не предполагать, что он реализует какой-либо из этих интерфейсов, а вместо этого вызывать .toList()
или .toMutableList()
.)