为什么 dagger graph 在 java 中可以工作,但在 Kotlin 中却说缺少 Provides,而我已经提供了?

2023-12-03

将 dagger 接口从 java 转换为 Kotlin 时遇到一些问题

我得到 [Dagger/MissingBinding] java.util.Map 如果没有 @Provides 注释的方法就无法提供。

这是我的界面

   interface TopicConfigModule {
    @Binds
    @IntoMap
    @StringKey(NAME)
    fun bindCommandHandler(handler: TopicCommandHandler): CommandHandler

    companion object {
        @JvmStatic
        @Provides
        @FragmentScope
        fun provideHubsConfig(
            commandRegistry: Map<String, CommandHandler>
        ): Config {
            return ...
        }
    }
}

CommandHandler是java接口

public interface HubsCommandHandler {```}



Map在 Kotlin 中是协变的 (variance) 其值类型 (public interface Map<K, out V>), but Map在Java中则不然。您的函数将被翻译为

Config provideHubsConfig(Map<String, ? extends CommandHandler> commandRegistry) { ... }

但匕首恰恰提供了Map<String, CommandHandler>。所以我们需要抑制通配符@JvmSuppressWildcards

commandRegistry: Map<String, @JvmSuppressWildcards CommandHandler>

从 Java 调用 Kotlin - 变体泛型

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

为什么 dagger graph 在 java 中可以工作,但在 Kotlin 中却说缺少 Provides,而我已经提供了? 的相关文章

  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 从 BroadcastReceiver 类调用活动方法

    我知道我可以做一个内部接收器类来调用接收器中的任何方法 但我的主要活动太大了 要做的事情也很多 因此 我需要一个扩展广播接收器的类 但它不是内部类 并且可以从我的主要活动中调用一种方法 我不知道是否可能 但我的活动是家庭活动和 single
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • Android 中如何通过彩信发送图片?

    我正在开发多媒体应用程序 我正在通过相机捕获一张图像 并希望将该图像和文本发送到其他号码 但我不知道如何通过彩信发送图像 MMS 只是一个 http post 请求 您应该使用执行请求额外的网络功能 final ConnectivityMa
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 我应该释放或重置 MediaPlayer 吗?

    我有自己的自定义适配器类 称为 WordAdapter 并且我正在使用媒体播放器 名为pronounce WordAdapter 类中的全局变量 我有不同的活动 其中每个列表项都有线性布局 名为linearLayout 我正在设置onCli
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 卡片视图 单击卡片移至新活动

    我是 Android 编程新手 正在研究卡片布局 我想知道如何使其可点击 android clickable true android foreground android attr selectableItemBackground 我的卡
  • 在命令行上卸载 Android SDK 的选定部分

    这与 卸载旧的 Android SDK 版本 https stackoverflow com questions 15182377 uninstall old android sdk versions 除非我想在无头 Linux CI 服务
  • 问题:为什么React Native Video不能全屏播放视频?

    我正在react native 0 57 7 中为android和ios创建一个应用程序并使用反应本机视频 https github com react native community react native video播放上传到的视频
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 我的应用程序中的后退按钮出现问题[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在手机关闭时清除共享首选项值 你
  • Dagger 2 中“HasFragmentInjector”的实际用法是什么

    我之前已经实现了 dagger2 v2 2 但现在他们也添加了 dagger android 部分 所以我正在用它创建示例项目 我知道旧的方法论 Provide and Modules and 成分等注释 但从 Dagger 2 8 开始
  • 发布的 Android apk 出现错误“包文件未正确签名”

    我最近将我的应用程序上传到 Android 市场 但是由于错误 下载时它拒绝运行 包文件未正确签名 我首先使用 eclipse 发布了数据包 右键单击导出 创建密钥库然后发布 但它拒绝工作 然后我下载了 keytool 和 jarsigne
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • Python:酸洗模块的替代方案

    我正在编写我的程序 大蒜模拟器 其中用户创建一个模拟 然后他可以按照自己的意愿操纵它 然后可以将其保存到文件中 我最近尝试实现保存功能 我想到的自然的事情就是腌制Project对象 其中包含整个模拟 问题是 Project对象还包括一个模块
  • self 类型注释中 this 和 self 之间的区别?

    在各种 Scala 文献中 我看到一些使用 this 的自我类型注释 以及其他使用 self 的自我类型注释 trait A this B gt trait A self B gt 使用 this 或 self 之间有什么真正的区别吗 你用
  • 扩展类继承静态变量值(PHP)吗?

    如果我有一个包含静态变量的基类 然后设置这个静态变量 然后有一个扩展基类的类 扩展类是否会保留我已经在基类中设置的静态变量的值 是的 虽然它们是不同的变量 但两个类中的静态变量位于同一引用集中 不过 您可以通过使用引用分配来破坏此引用集 或
  • 如何按索引组合两个 RDD[String]?

    我正在使用 Spark RDD 并创建了两个相同长度的数组 一个是推文的小时数 另一个是推文的文本 我希望将它们组合成一个数据结构 也许是一个元组 我可以按时间和推文文本进行过滤 但在组合后我在如何执行此操作方面遇到了困难 scala gt
  • 以非交互方式运行 Build.pl

    When Build pl某些 Perl 项目的运行在以前未用于 Perl 开发的系统上 如果用户想要在安装前添加某些包 它会一次又一次地中断 有什么方法可以让非交互式默认运行Build PL无需观看几个小时并一次又一次地按 输入 键 PE
  • 重试承诺步骤

    假设我有以下 Promise 链 var result Promise resolve filename then unpackDataFromFile then transformData then compileDara then wr
  • 返回并重新加载页面

    我的 ASP NET Framework 4 Web 项目中的导航存在问题 我在主页上有一个登录字段 母版页还包含一个 ContentPlaceHolder 它动态包含其他 aspx 页面 我从页面 a 开始并导航到页面 b 当我登录页面
  • 使用 iOS 7 在 iPad 上以 2x 模式启动应用程序

    在 iOS 7 之前 在 iPad 上打开的 iPhone 应用程序通常以 2x 模式启动 iOS 7 似乎强制所有应用程序 即使它们不是为 iPad 设计的 以 1x 模式启动 我们如何强制我们的应用程序在使用 iOS 7 的 iPad
  • Tensorflow 准确度为 0.99,但预测结果很糟糕

    也许我的预测是错误的 这是该项目 我有一个灰度输入图像 我正在尝试对其进行分割 分割是一个简单的二元分类 考虑前景与背景 所以基本事实 y 是一个由 0 和 1 组成的矩阵 所以有 2 个分类 哦 输入图像是一个正方形 所以我只使用一个名为
  • 是否可以在 javascript 中像媒体查询一样使用 css?

    我想知道是否有一种方法可以使用媒体查询javascript就像我在 CSS 中使用它一样 我想处理设备宽度 or 方向并触发一个函数 现在我正在使用这段代码 window onresize function event test for v
  • 字典中元素的配对组合,不重复

    在Python中 我有一个像这样的字典 pleio firstLine enf1 54 set enf2 48 free enf3 34 set enf4 12 free secondLine enf5 56 bgb enf6 67 kio
  • int[ ] 中未分配的值

    想知道在 C 中未分配的整数的值是多少int 通常是 Example int arr 5 arr 1 2 arr 3 4 for int i 0 i lt 5 i cout lt
  • 将 UTC 转换为当前区域设置时间

    我正在从 Web 服务下载一些 JSON 数据 在此 JSON 中 我有一些日期 时间值 一切都以 UTC 时间为准 如何解析此日期字符串 以便结果 Date 对象位于当前区域设置中 例如 服务器返回 2011 05 18 16 35 01
  • jQuery UI Datepicker:当今天也被选中时不突出显示

    我正在使用jQuery 日期选择器选择日期 它工作正常 除了我想更改 1 个默认行为 当您选择一天时 所选日期会突出显示 我喜欢 当前日期也被突出显示 但使用不同的 css 样式 我也喜欢 但是 如果您选择当天 则突出显示 因为它是当天 因
  • git push 尝试推送 git ls-files 中未列出的文件

    我不小心在我的仓库中提交了一个不必要的大子文件夹 xxxxx 当我在推送时意识到这一点时 我中途停止了推送 然后我使用以下命令从存储库中删除了不必要的文件夹 xxxxx git rm r cached xxxxx 但同时ls files不显
  • Xamarin Forms 和 Azure Easy Tables 同步问题

    我在 Visual Studio 中使用 Azure 作为后端开发 Xamarin Forms 应用程序已经有一段时间了 我遇到了一个非常奇怪的问题 请注意 我正在遵循本文中提到的方法blog 由于某些奇怪的原因 PullAsync 方法似
  • 测试用户角色,VB.NET中的授权属性

    我正在使用 ASP NET MVC 构建网站 我使用 VB 作为编程语言 我有几个问题 1 我创建了一个角色 经理 如何检查用户是否属于该特定角色 现在我正在使用 If My User IsInRole Manager Then Direc
  • 帮助解决Python UnboundLocalError:赋值前引用的局部变量

    我之前已经发布过类似的问题 但是 我想我可能误解了我的问题 所以我可以在这里发布我的原始代码 并寻找有人可以帮助我 我现在真的陷入了困境 非常感谢 from numpy import import math as M initial con
  • Google Scripts:如何调用一个函数在另一个函数完成后运行

    我有一个谷歌脚本 其中有 4 个不同的函数 需要一个接一个地运行 但一个函数可以在前一个函数完成 完成后运行 每个函数所需的时间各不相同 但平均每个函数大约需要 15 20 分钟 每个函数都会完成一个包含大量数据的电子表格 因此我想在触发器
  • 为什么 dagger graph 在 java 中可以工作,但在 Kotlin 中却说缺少 Provides,而我已经提供了?

    将 dagger 接口从 java 转换为 Kotlin 时遇到一些问题 我得到 Dagger MissingBinding java util Map 如果没有 Provides 注释的方法就无法提供 这是我的界面 interface T