Преобразование класса, имеющий в наследовании этот класс
Пока делал программу, наткнулся на проблему. Минимальный код для репродукции:
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.