Подтвердить что ты не робот

java.lang.IllegalArgumentException: интерфейсы API не должны расширять другие интерфейсы. Retrofit 2

У меня возникает следующая проблема с помощью Retrofit 2 beta 2:

java.lang.IllegalArgumentException: API interfaces must not extend other interfaces.

Это связано с тем, что у меня есть один интерфейс для API для переоснащения:

public interface RetrofitBaseAPI {

    @POST
    Call<LoginResp> login(@Url String url, @Body LoginReq loginReq);

    @POST
    Call<String> logout(@Url String url, @Header("Cookie") String sid);
}

Например, один из них:

public interface RetrofitWiserLinkAPI extends RetrofitBaseAPI {

    @GET("/rs/DeviceIdentification")
    Call<DeviceId> getDeviceIdentification(@Header("Cookie") String sid);
}

И затем у меня есть три других интерфейса, три из которых простираются от этого интерфейса RetrofitBaseAPI.

Когда я пытаюсь вызвать retrofit.create(класс класса) с данным интерфейсом, я всегда получаю эту ошибку.

Насколько я читал, единственным решением является создание трех независимых интерфейсов. Это правда? Кто-нибудь знает другое решение?

Я нахожу немного странным, что нам нужно дублировать код, но хорошо, может быть, есть причина, по которой я не понимаю.....

Спасибо заранее!

Спасибо,

EDIT: та же проблема с использованием окончательной версии Retrofit 2. Я предполагаю, что это ограничение от Retrofit....

4b9b3361

Ответ 1

Невозможно иметь базовый интерфейс дооснащения.

JakeWharton:

Дооснащение способствует составу над наследованием. Один интерфейс для каждой службы.

Итак, как вы уже выяснили, единственным решением является создание трех независимых интерфейсов.