Котлинское отражение возвращает неверный тип - PullRequest
0 голосов
/ 21 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...