【发布时间】:2019-07-19 19:29:19
【问题描述】:
正在测试强制转换、列表等的行为,但遇到了一些我无法弄清楚的事情。将列表转换为不同类型的列表时,不会引发异常,使用安全转换时也不会导致 null。这是为什么呢?
data class Rectangle(val width: Int, val height: Int)
data class Circle(val radius: Int)
fun main(args: Array<String>) {
val listOfRects: List<Rectangle> = listOf(Rectangle(5,5))
val listOfUnkown: List<Any?> = listOfRects
val listOfWrongType: List<Circle> = listOfUnkown as List<Circle>
// also works, thought should throw null
// val listOfWrongType: List<Circle>? = listOfUnkown as? List<Circle>
print(listOfWrongType)
}
输出
Test.kt:9:44: warning: unchecked cast: List<Any?> to List<Circle>
val listA: List<Circle> = listOfUnkown as List<Circle>
^
[Rectangle(width=5, height=5)]
当我将列表设置为完整性检查时,我还尝试制作列表的深层副本。
【问题讨论】:
标签: kotlin