Generics 如何使用通过反射检索的类型创建可变列表

Generics 如何使用通过反射检索的类型创建可变列表,generics,kotlin,reflection,generic-collections,Generics,Kotlin,Reflection,Generic Collections,我目前正在处理一个反序列化问题,该问题要求在kotlin中填充一个可变列表,并使用通过反射获得的泛型类型。具体来说,我提供了一个函数变量,我需要使可变列表的泛型类型等于该函数的返回类型 虽然我可以返回一个类型为“Any”的可变列表,但在引擎盖下,我需要它有一个特定的类型——我尝试了下面的方法,但这不起作用。我发现stackoverflow上的一个非常类似的问题在这里得到了解决,但我在将其转换为kotlin时遇到了困难: val jsonArray=jsonTree.get(“arrayFiel

我目前正在处理一个反序列化问题,该问题要求在kotlin中填充一个可变列表,并使用通过反射获得的泛型类型。具体来说,我提供了一个函数变量,我需要使可变列表的泛型类型等于该函数的返回类型

虽然我可以返回一个类型为“Any”的可变列表,但在引擎盖下,我需要它有一个特定的类型——我尝试了下面的方法,但这不起作用。我发现stackoverflow上的一个非常类似的问题在这里得到了解决,但我在将其转换为kotlin时遇到了困难:


val jsonArray=jsonTree.get(“arrayFieldName”)//返回jsonNode
val方法:method=retrieveMethod()//JsonNode::intValue/booleanValue/。。。
val genericList=mutableListOf()
for(jsonArray.elements()中的项)
genericslist.add(方法.调用(项))
返回泛型列表

与C#不同,在Kotlin和Java中,泛型类型基本上都编译为
Any?
。这称为类型擦除,使泛型类型对反射获取的类型无效。也许您可以共享使
不适用于您的用例,以便我们能够找到问题的根源。返回genericslist所属方法的返回类型是什么?如何确保它与反射
方法的返回类型兼容?与C不同,在Kotlin和Java中,泛型类型基本上都编译为
Any?
。这称为类型擦除,使泛型类型对反射获取的类型无效。也许您可以共享使
不适用于您的用例,以便我们能够找到问题的根源。返回genericslist
所属方法的返回类型是什么?如何确保它与反射
方法的返回类型兼容?

val jsonArray = jsonTree.get("arrayFieldName") // returns jsonNode
val method: Method = retrieveMethod() // JsonNode::intValue / booleanValue / ...

val genericList = mutableListOf<method.returnType>()
for (item in jsonArray.elements())
  genericList.add(method.invoke(item))

return genericList