Kotlin:类的通用参数及其解析方式

时间:2019-03-11 15:13:06

标签: generics kotlin types

我的问题在以下示例中,为什么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?

0 个答案:

没有答案