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

2024-01-12

我在使用 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 class) 时,我总是收到此错误。

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

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

提前致谢!

Thanks,

编辑:使用最终的 Retrofit 2 发行版本时出现同样的问题。我猜这是Retrofit的限制......


不可能有一个基本的 Retrofit 接口。

杰克·沃顿 https://stackoverflow.com/users/132047/jake-wharton——《Retrofit》的作者:

Retrofit 更倾向于组合而不是继承。每个服务一个接口。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.lang.IllegalArgumentException:API接口不得扩展其他接口Retrofit 2 的相关文章

随机推荐

  • 哪个 Actor 模型库/框架适用于 python 和 Erlang 类? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个易于学习的 Python 2 x Actor 库或框架 我尝试过 Candygram 和
  • 从 SSJS xPages 调用 jar 的类

    我想问一个关于在 xPages 上的 SSJS 服务器端 JavaScript 中使用 Java 类的问题 我创建了一个简单的 Java 类 HelloWorld 并将其导出到 jar 文件 然后我尝试在 xPage 上从 SSJS 调用它
  • React Native for iOS 中宽度、高度、填充等的默认单位是什么?

    我正在为 iOS 构建一个 React Native 应用程序 Facebook 文档说宽度 高度 填充 边距等需要一个数字 我想知道样式的默认单位是什么
  • 在 PHP 中高效地逐行读取大文件?

    我的应用程序读取一个 5MB 10MB 的大文件 该文件已使用 json 条目逐行输入 每一行都由一个解析器处理 该解析器被馈送到多个解析器并单独处理 一旦文件被读取 文件就会被移动 该程序不断地输入要处理的文件 该计划目前与 file g
  • IE7 仅忽略来自生产服务器的页面上的 CSS 属性选择器

    在我的网站上 IE7 似乎忽略了某些 CSS 属性选择器 奇怪的是 只有当页面来自生产服务器时才会发生这种情况 如果我有完全相同的代码在我的个人服务器上 或者保存在我的硬盘上 它工作得很好 这是导致该问题的示例
  • R 中的“不加入”

    我正在寻找一种快速的方法来 不加入 即保留未合并的行 或内部联接的逆 我一直在做的方法是使用 data table 作为 X 和 Y 然后设置键 例如 require data table X lt data table category
  • 在 OSX 中捕获媒体键(播放/暂停)

    研究 问题 中年危机 有一些问题here https stackoverflow com questions 2477068 listening to mac keyboard play pause events and there htt
  • JGit:检索与 git 提交关联的标签

    我想使用 JGit API 检索与特定提交哈希相关的标签 如果有的话 请提供相同的代码片段 Git 对象模型 http book git scm com 1 the git object model html将标签描述为包含有关特定对象的信
  • @Order注解对XML序列化顺序没有影响

    我正在使用 Retrofit 2SimpleXmlConverter我在创建 Soap 请求对象时遇到一个问题 该对象基本上是一个具有 4 个元素子元素的元素 每个子元素都是不同的数据类型 这里是XML我想要产生的输出 必须遵守元素顺序
  • 如何在 Xcode 9 中使用带有 Playground 的自定义框架

    我正在尝试在 Playground 中使用自定义框架 如 Apple 文档中所述 http help apple com xcode mac 9 0 devc9b33111c http help apple com xcode mac 9
  • Eclipse 上安装的插件不可见

    当我在 Eclipse 中安装插件时 一切都很顺利 但重启后新插件就看不见了 我尝试过使用不同的插件 但它们都有同样的问题 我能看到它们的唯一地方是当我查看 已安装什么 时 可能是什么问题呢 这个问题及其解决方案在DZone 文章 http
  • 我正在用 C 搜索 cgi 库来构建一个安静的 Web 服务

    我想构建一个安静的 CoAP Web 服务 它可以执行 C 代码来处理事件 因此我正在搜索一个lib 它为我提供了C和cgi中的rest api 类似于 遗憾的是 restcgi 是用 c 编写的 而 CGI Simple 是用 perl
  • System.Data.SqlClient.SqlException:列名“Gender_id”无效

    我正在学习使用 ASP NET MVC 和实体框架进行 Web 应用程序开发 我有一个包含 3 个表的数据库 分别是学生 性别和课程 我遇到了这个问题 错误位于第 23 行 列名称 Genders Id 无效 列名 Programs Id
  • ruby 方法名称中的变量

    我有以下代码 for attribute in site device attributes device attribute end 我希望代码用 属性 的值替换方法名称 我努力了device attribute 以及各种排列 这完全不可
  • 找不到文本月份,跟踪数据 Carbon - laravel

    我确实尝试了不同的方法 但没有得到正确的时间格式 news gt created at Carbon parse news gt created at gt format M d Y news gt created at date d M
  • OpenCV DFT_INVERSE与Matlab的ifft不同

    我尝试使用 opencv 的 dft 函数过滤信号 我尝试的方法是在时域中获取信号 x 0 0201920000000000 0 0514940000000000 0 0222140000000000 0 0142460000000000
  • getenv() 的全局变量?

    哪个全局变量保存了 getenv 的所有环境变量 在哪个 glibc 文件中 这个 var 填充了 env vars 我相信它是 environ 但是当我在 bash 中设置环境变量时 它只输出 SSH AGENT PID 环境变量 为什么
  • 什么是 SQL“伪列”?

    我不小心编码了SELECT FOO 并收到错误 无效的伪列 FOO 我找不到他们的任何文档 这是我应该知道的事情吗 编辑 这是一个 MS SQL Server 特定问题 伪列是实际列的符号别名 具有特殊属性 例如 IDENTITY 是分配了
  • Cordova PushPlugin:应用程序未运行时 Android 不会播放推送声音

    我正在使用推送插件 https github com phonegap build PushPlugin对于cordova 以及在android中 当应用程序未运行或在后台时 我无法使推送通知播放声音 状态栏中的横幅显示正常 这是在 and
  • java.lang.IllegalArgumentException:API接口不得扩展其他接口Retrofit 2

    我在使用 Retrofit 2 beta 2 时遇到了下一个问题 java lang IllegalArgumentException API interfaces must not extend other interfaces 这是因为