Выбор ответа Senior Сеть: Retrofit и OkHttp обновлено

Как Retrofit реализует интерфейс API

Вопрос

Как Retrofit создаёт реализацию интерфейса ArticlesApi?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Через динамический прокси Java в рантайме: по аннотациям строит HTTP-запрос. retrofit.create(Api::class.java) возвращает java.lang.reflect.Proxy.

Варианты ответа

  1. Через динамический прокси Java в рантайме: по аннотациям строит HTTP-запросправильный ответ
  2. Генерирует реализацию при компиляции через KSP, поэтому нужен плагин Retrofit
  3. Требует ручную реализацию интерфейса, а аннотации служат только документацией
  4. Компилирует интерфейс в байткод OkHttp-вызовов при первой загрузке класса

Разбор

retrofit.create(Api::class.java) возвращает java.lang.reflect.Proxy. При вызове метода Retrofit по аннотациям (@GET, @Path, @Query, @Body) собирает запрос, выполняет его через OkHttp и конвертирует ответ. Разбор аннотаций кешируется. Кодогенерации при компиляции у Retrofit нет, поэтому для R8 нужны правила сохранения, которые Retrofit уже поставляет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.