我想将类型(如
KClass
)作为参数传递给函数。但是,特定类型可能是参数的子类型,但编译器始终期望函数签名中指定的特定类型。
interface A
class Implementation1 : A
class Implementation2 : A
fun showType(aType: KClass<A>) {
println(aType.simpleName)
}
showType(Implementation1::class) // ⚡wrong parameter type
如果我尝试编译它,我会得到:
Type mismatch: inferred type is KClass<Implementation1> but KClass<A> was expected
因此,虽然 Implements1 实现了预期的接口
A
,但继承似乎被反射忽略了。
有没有办法通过反射接受派生类型?