Mam kolejny problem przy użyciu Modernizacja 2 Beta 2:interfejsy API nie musi rozciągać się inne interfejsy Modernizacja 2
java.lang.IllegalArgumentException: API interfaces must not extend other interfaces.
To dlatego, że mam jeden interfejs API z Retrofit jak ten:
public interface RetrofitBaseAPI {
@POST
Call<LoginResp> login(@Url String url, @Body LoginReq loginReq);
@POST
Call<String> logout(@Url String url, @Header("Cookie") String sid);
}
na przykład, jednym z nich jest to jedno:
public interface RetrofitWiserLinkAPI extends RetrofitBaseAPI {
@GET("/rs/DeviceIdentification")
Call<DeviceId> getDeviceIdentification(@Header("Cookie") String sid);
}
A potem, mam trzy inne interfejsy, trzy z następujących m rozciąga się od tego interfejsu RetrofitBaseAPI.
Kiedy próbuję wywołać retrofit.create (klasa klasy) z podanym interfejsem, zawsze otrzymuję ten błąd.
Jeśli chodzi o czytanie, jedynym rozwiązaniem jest utworzenie trzech niezależnych interfejsów. Czy to prawda? Ktoś zna inne rozwiązanie?
znajdę trochę dziwne, że musimy powielać kodu, ale również, a może nie ma powodu nie rozumiem .....
Z góry dzięki!
Dzięki,
EDIT: sam problem przy użyciu ostatecznej Modernizacja 2 wersja. Domyślam się, że jest to ograniczenie z Retrofit ....
nie jest to niemożliwe. Możesz przeczytać więcej [tutaj] (https://github.com/square/retrofit/pull/676) – Blackbelt
Wielkie dzięki za odpowiedź! A ograniczenie jest z jakiegoś szczególnego powodu wydajności, projektowania itp.? Czy może tylko zmniejszyć możliwe przypadki użycia? – zapotec
@zapotec "Retrofit sprzyja kompozycji, która dodaje dziedziczenie." powiedział ktoś ... –