Мой вопрос в следующем примере: почему компилятор 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», потому что когда выпереключить тип так, что есть неявное приведение, верно?Но по тому же принципу он должен знать, что «param» должен иметь конкретный тип «B», когда значением является «A», потому что общие параметры должны быть одинаковыми.Так почему же я не могу использовать «param» как B в этом случае?