У меня есть действие, которое реализует слушатель с универсальным типом, который требует от меня реализации функции 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, чтобы приведенный выше фрагмент кода нашел правильный тип класса параметра?