在kotlin中以Reflective方式访问内部类父类KType

在kotlin中以Reflective方式访问内部类父类KType,kotlin,reflection,Kotlin,Reflection,我正在尝试使用Kotlin反射库以反射方式实例化一个内部类,这并不难,只是我需要将父类的实例传递给子类构造函数 是否有任何函数/方法可以获取父类的KType(不使用其名称和class.forName()) 以下是我试图实现的一个示例: class Parent { inner class Child() } fun main() { val childType: KType = typeOf<Parent.Child>() val parentType = c

我正在尝试使用Kotlin反射库以反射方式实例化一个
内部类
,这并不难,只是我需要将父类的实例传递给子类构造函数

是否有任何函数/方法可以获取父类的
KType
(不使用其名称和
class.forName()

以下是我试图实现的一个示例:

class Parent {
    inner class Child()
}
fun main() {
    val childType: KType = typeOf<Parent.Child>()
    val parentType = childType.getParent()
}
类父类{
内类子类()
}
主要内容(){
val childType:KType=typeOf()
val parentType=childType.getParent()
}

我没有看到专门用于此的API(有点意外),但由于您有构造函数,例如:

val constructor = (childType.classifier as KClass<*>).constructors.first() 

(未测试;请尝试
valueParameters[0]
而不是
instanceParameter
,如果它不起作用。)

我没有看到专门用于此的API(有点令人惊讶),但由于您有构造函数,例如:

val constructor = (childType.classifier as KClass<*>).constructors.first() 

(未测试;请尝试
valueParameters[0]
而不是
instanceParameter
,如果它不工作。)

kotlin reflect库似乎错误地返回了
实例
参数的类型:

val childType = typeOf<Parent.Child>()

val instanceParameterType = childType.jvmErasure.constructors.first().parameters.first().type

//returns com.org.sample.Parent.Child

kotlin reflect库似乎错误地返回了
实例
参数的类型:

val childType = typeOf<Parent.Child>()

val instanceParameterType = childType.jvmErasure.constructors.first().parameters.first().type

//returns com.org.sample.Parent.Child

不幸的是,这也不起作用。我认为这是kotlin反射的问题,它错误地返回了子类型for instance参数。我已经找到了一个解决办法不幸的是,这也不起作用。我认为这是kotlin反射的问题,它错误地返回了子类型for instance参数。我已经找到了解决这个问题的办法