请在 Kotlin 中解释此行为:
data class A<T>(val p: T)
class B
fun f1(): A<Number> = A(B()) as A<Number>
fun f2(): A<Unit> = A(B()) as A<Unit>
fun main() {
println("f1: ${f1().p::class.simpleName}") // print "f1: B"
println("f2: ${f2().p::class.simpleName}") // print "f2: Unit"
}
我希望在第一种和第二种情况下输出“B”。
此外,有趣的是,它可以正常工作data class A<T>(val p: T?)
。
这是某种编译器优化吗?