为啥我在使用 Retrofit2 时得到“Type okhttp3.Call 没有类型参数”?

Posted

技术标签:

【中文标题】为啥我在使用 Retrofit2 时得到“Type okhttp3.Call 没有类型参数”?【英文标题】:Why do I get "Type okhttp3.Call does not have type parameters" when using Retrofit2?为什么我在使用 Retrofit2 时得到“Type okhttp3.Call 没有类型参数”? 【发布时间】:2016-05-12 14:57:43 【问题描述】:

我正在尝试遵循 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(Android 手机 api 除外)

请帮助我了解为什么会出现此错误,据我所知,周围没有人有相同的东西,所以我错过了一些基本的东西。

【问题讨论】:

【参考方案1】:

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

import retrofit2.Call;

所有与改造相关的导入都应该来自包retrofit2

另一方面

 Call contributors(

它无法猜测你想要返回什么。一个ContributorList&lt;Contributor&gt; 也许?例如

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

【讨论】:

我将其更改为您编写的确切内容(与教程相同),现在我收到上述错误 改造中没有Call 可用:S 如果我选择呼叫并按alt+enter,我只能选择创建新课程等。 我需要导入旧的 Retrofit 版本吗?如果我 compilecom.squareup.retrofitcom.squareup.retrofit2 都可以导入 retrofit.Call。这是我应该做的吗? 不,你不需要那个。你只需要retrofit2,你必须导入this 我确实编辑了答案。如果仍有问题,请发布更多代码

以上是关于为啥我在使用 Retrofit2 时得到“Type okhttp3.Call 没有类型参数”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在使用 WideCharToMultiByte 时得到错误的字符数组?

为啥我在使用 RestTemplate 获取数据时总是得到 403? [复制]

为啥我在使用 parseINt 或 undefined 时得到 NaN?

为啥我在使用 SHFileInfo 时得到错误的 SpecialFolder 图标?

在 Retrofit2 上使用 HTTPs 的 SSLProtocolException

为啥我在使用cleaned_data 时没有得到干净的数据