Выбор ответа Senior Сеть: Retrofit и OkHttp обновлено
Как Retrofit реализует интерфейс API
Вопрос
Как Retrofit создаёт реализацию интерфейса ArticlesApi?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Через динамический прокси Java в рантайме: по аннотациям строит HTTP-запрос. retrofit.create(Api::class.java) возвращает java.lang.reflect.Proxy.
Варианты ответа
- Через динамический прокси Java в рантайме: по аннотациям строит HTTP-запросправильный ответ
- Генерирует реализацию при компиляции через KSP, поэтому нужен плагин Retrofit
- Требует ручную реализацию интерфейса, а аннотации служат только документацией
- Компилирует интерфейс в байткод OkHttp-вызовов при первой загрузке класса
Разбор
retrofit.create(Api::class.java) возвращает java.lang.reflect.Proxy. При вызове метода Retrofit по аннотациям (@GET, @Path, @Query, @Body) собирает запрос, выполняет его через OkHttp и конвертирует ответ. Разбор аннотаций кешируется. Кодогенерации при компиляции у Retrofit нет, поэтому для R8 нужны правила сохранения, которые Retrofit уже поставляет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.