java.lang.IllegalArgumentException:API接口不得扩展其他接口Retrofit 2

时间:2015-12-09 14:25:28

标签: android inheritance retrofit

我在使用Retrofit 2 beta 2时遇到了下一个问题:

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

这是因为我有一个用于Retrofit 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(Class类)时,我总是收到此错误。

据我所知,唯一的解决方案是创建三个独立的界面。这是真的吗?有人知道另一个解决方案吗?

我觉得我们需要复制代码有点奇怪,但是,也许有一个我不理解的原因......

提前致谢!

谢谢,

编辑:使用最终的Retrofit 2发行版本的相同问题。我想这是Retrofit的限制....

1 个答案:

答案 0 :(得分:18)

无法使用基本的Retrofit界面。

JakeWharton

  

改造有利于构成而不是继承。每个服务一个接口。

正如您已经发现的那样,唯一的解决方案是创建三个独立的接口。