Преобразование класса, имеющий в наследовании этот класс

Пока делал программу, наткнулся на проблему. Минимальный код для репродукции:

class A : ArrayList<Int>(){}

fun main() {
    val listA = listOf(1, 3, 2)
    val B = listA as A
}

Этот код выкидывает исключение:

java.lang.ClassCastException: class java.util.Arrays$ArrayList cannot be cast to class A

Но почему? Ведь класс A является ArrayList, так в чем проблема? Просто не могу этого понять, спасибо заранее за пояснение


Ответы (1 шт):

Автор решения: Eugene Krivenja

Вот так будет работать

typealias A = ArrayList<Int>

fun main() {
    val listA = ArrayList<Int>()
    val B = listA as A
}

listOf() возвращает другой тип, он не будет каститься напрямую в стандартный ArrayList.

→ Ссылка