【发布时间】:2021-06-27 02:55:21
【问题描述】:
这个函数有个奇怪的问题。当我以 SDK 28 为目标时,没有问题,也没有发生崩溃。这是目标 SDK 28 的工作代码。
override fun getChildList(): List<Any> {
val itemsWithSubCats: MutableList<in Any> = ArrayList(items)
if (subCategories?.isNotEmpty() == true) {
itemsWithSubCats.add(ArrayList<Any>(subCategories))
}
return itemsWithSubCats.toList() as List<Any>
}
我已将发布版本上传到 Playstore,但我遇到了升级 SDK 问题。于是我升级到了29 SDK,导致上一个函数编译出错,所以我把它修复成如下:
override fun getChildList(): List<Any> {
val itemsWithSubCats: MutableList<in Any?> = mutableListOf(items)
if (subCategories?.isNotEmpty() == true) {
itemsWithSubCats.add(ArrayList<Any>(subCategories!!))
}
return itemsWithSubCats.filterNotNull().toList()
}
导致 ClassCastException 如下:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to ..RestaurantDetailsMenuItem
【问题讨论】:
标签: java android kotlin collections classcastexception