使用Retrofit2时,为什么会出现“类型okhttp3.Call没有类型参数”?

时间:2016-02-03 12:05:31

标签: java android android-studio retrofit2 okhttp3

我正在尝试使用本教程进行Retrofit2 Getting Started and Create an Android Client

进口很好

compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3'
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3'

除了一件事,我可以很好地遵循教程。我正在尝试创建GitHubService Interface并遇到两个问题:Call<V>表示它不接受任何类型参数,我也不确定将Contributor类置于何处根据教程仅宣称为static,这是否意味着它嵌套在某处?

import okhttp3.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;

public interface GitHubClient {
    @GET("/repos/{owner}/{repo}/contributors")
    Call<List<Contributor>> contributors(
        @Path("owner") String owner,
        @Path("repo") String repo
    );
}

static class Contributor {
    String login;
    int contributions;
}

我将Contributor类放在一个单独的文件中并将其公之于众。 此外,Call类不会在Android Studio中自动导入,我必须手动选择它,但它是我收到的唯一一个Call(Androids phone api除外)

请帮助我解释为什么我会收到这些错误,从我看到的情况来看,周围没有任何人都有同样的错误,所以我错过了一些基本的错误。

1 个答案:

答案 0 :(得分:12)

根据编译时错误,您从错误的包中导入Call。请检查您的导入并确保您有

import retrofit2.Call;

所有与Retrofit相关的导入应该来自包retrofit2

另一方面

 Call contributors(

它无法猜出你想要归来的东西。一个Contributor?可能是List<Contributor>? E.g。

public interface GitHubClient {
    @GET("/repos/{owner}/{repo}/contributors")
    Call<List<Contributor>> contributors(
        @Path("owner") String owner,
        @Path("repo") String repo
    );
}