我的问题在以下示例中,为什么kotlin编译器不知道'fromParam'的真实类型?
open class S<R>(val param : R)
class A : S<B>(B())
class B
fun <R> test(value : S<R>, param : R) {
when(value) {
is A -> {
val fromClass : B = value.param
val fromParam : B = param // <- compiler error, found R required B
}
}
}
好的,所以'fromClass'有一个具体的类型'B',因为当您像这样切换类型时,会隐式转换,对吗?但是出于同样的原因,当值是“ A”时,它应该能够知道“参数”必须是具体类型“ B”,因为通用参数必须相同。那么为什么在这种情况下我不能使用'param'作为B?