gpt4 book ai didi

kotlin - 带有 Kotlin 类委托(delegate)的 Dagger 构造函数注入(inject)

转载 作者:行者123 更新时间:2023-12-02 13:34:49 25 4
gpt4 key购买 nike

我有以下 Kotlin 类:

@ExperimentalCoroutinesApi
class SharedPrefClient
@Inject constructor(private val prefs: SharedPreferences)
: SharedPreferences by prefs {

...

}

在 Dagger 中,我在构建项目时收到以下错误:

enter image description here

但是当我删除类委派 : SharedPreferences by prefs 时它可以工作

现在我的问题是如何同时使用 Dagger 和 Kotlin 类委托(delegate)。

最佳答案

在我看来问题出在 android.annotation.Nullable通过使用 by 将其拉入您的代码中关键字,但无法从 Android 源代码外部访问。

通常,如果无法解析类型,您会直接看到错误,但在这种情况下,Kotlin 会生成带有未知注解的 Java 代码,而 Dagger 会尝试处理它,从而导致您的错误。

如果您创建自己的界面而不是 SharedPreferences它会像你期望的那样工作得很好。

您也许可以添加 android.annotation.Nullable以某种方式添加到您的(仅编译)类路径,以便 Dagger 可以做它的事情,但找到另一种方法可能更容易。

我看到你可以在这里提出的三个问题

  • Dagger 应该更好地失败。在这种情况下,错误消息几乎没有帮助
  • Android 不应公开内部/隐藏类型,
  • 和/或 Kotlin 不应该引入那些隐藏类型
  • 关于kotlin - 带有 Kotlin 类委托(delegate)的 Dagger 构造函数注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58930220/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com