在kotlin中以Reflective方式访问内部类父类KType
我正在尝试使用Kotlin反射库以反射方式实例化一个在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
内部类
,这并不难,只是我需要将父类的实例传递给子类构造函数
是否有任何函数/方法可以获取父类的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参数。我已经找到了解决这个问题的办法