Приведение не превращает объект в объект другого типа. Когда вы назначаете list
record
, он по-прежнему доступен только для чтения List
, но вы вынудили компилятор рассматривать его как MutableList
, поэтому он завершится ошибкой во время выполнения, а не во время компиляции.
Поскольку вы создаете экземпляр list
как доступный только для чтения List
, он защищен от изменений (по крайней мере, в отношении своего размера). Если это не то, что вам нужно, вы должны для начала создать его как MutableList
. Или, если вам просто нужна его копия, которую вы можете изменить, вы можете использовать toMutableList()
, чтобы получить копию.