Kotlin反射返回错误的类型

时间:2018-11-21 15:53:14

标签: reflection kotlin

我有一个活动,该活动使用通用类型实现侦听器,该通用类型要求我实现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代码中写些什么来使上面的代码找到正确的参数类类型?

0 个答案:

没有答案