我有一个活动,该活动使用通用类型实现侦听器,该通用类型要求我实现onResponse函数。
侦听器以以下格式定义:
public interface ListenerClass<T> {
onResponse(T type)
}
我的活动使用T == ModelClass
来实现它。
class MyActivity : ListenerClass<ModelClass> {
(...)
override fun onResponse(response: ModelClass) {
(...)
}
}
该侦听器是SDK的一部分,因此我无法在其中更改任何代码。他们使用下面的代码通过反射来获取我的“ ModelClass”的类型:
listener.getClass().getDeclaredMethods()[onResponseIndex].getParameterTypes()[0]
此代码的结果应为Class<ModelClass>
,但我得到的是Class<Object>
。我发现,当我在Java类上调用上面的代码时,我得到了正确的结果,但是我的活动是用Kotlin编写的。
1)如何使用反射获取kotlin函数的参数类型?
2)如果我对问题1有答案,我仍然无法更改SDK的代码。我可以在Kotlin代码中写些什么来使上面的代码找到正确的参数类类型?