当前位置: 首页 > 知识库问答 >
问题:

"只有const val可以用于常量表达式"编译时错误Dagger2静态编程语言

空夕
2023-03-14

无法构建项目来创建依赖注入。我在Java中成功构建了它,但是在将每个文件转换为静态编程语言时(现在真的很感兴趣...)项目无法构建,因为存在编译时错误

"只有'const val'可以用于n个常量表达式未解析的参考:Application ationModule注释参数必须是编译时常量"

对于正确的静态编程语言开发人员来说,这是一个无脑的改变,但这让我非常困惑。

由于ApplicationModule不会导入,我无法构建该项目。

应用程序组件

@Singleton
@Component(modules = [ApplicationModule::class])
interface ApplicationComponent {

    fun inject(application: MyApplication)

    @get:ApplicationContext
    val context: Context

    val networkService: NetworkService

    val databaseService: DatabaseService



}

应用程序模块

@Module
class ApplicationModule(private val application: MyApplication) {

    @ApplicationContext
    @Provides
    internal fun provideContext(): Context {
        return application
    }

    @Provides
    @DatabaseInfo
    internal fun provideDatabaseName(): String {
        return "dummy_db"
    }

    @Provides
    @DatabaseInfo
    internal fun provideDatabaseVersion(): Int? {
        return 1
    }

    @Provides
    @NetworkInfo
    internal fun provideApiKey(): String {
        return "SOME_API_KEY"
    }
}

https://github.com/BenMohammad/DaggerAppKotlin

共有1个答案

丰博
2023-03-14

您错过了应用程序模块文件中的包行。

把这行代码放在包com上。实例daggerappkotlin。di。应用程序模块文件顶部的模块

 类似资料:
  • 我有一个注释要求是编译时常量。我从下面的中获取: 我的s如下: 当我使用注解Kotlin需要是编译时常量。 注释实现本身: 我仔细研究了类似的问题,但没有找到解决方法。我还找到了一篇与这个主题相关的文章,但到目前为止没有任何效果。 附带说明:我不能更改注释,因为它来自库,我也不能更改库。 总而言之,有没有办法从静态编程语言中的编译时常量到注释中使用?

  • 问题内容: 以下文本来自jls http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.5.3 即使这样,仍然存在许多并发症。如果在字段声明中将final字段初始化为编译时常量表达式(第15.28节),则可能不会观察到对final字段的更改,因为在编译时会用常量表达式的值替换对final字段的使用。 有人可以给我更好的

  • 问题内容: 这是一段Java代码: 它不编译,什么是概率?错误:该行上有多个标记;’bool’变量上的语法错误。我希望它能打印出来。虽然根据我的教程书可以打印。 我知道它会发生短路,但如果&&双方都需要进行评估,那不是家庭作业,我正在学习Java。干杯 问题答案: 等效于:- 由于被评估为,因此第二个表达式不被评估,因为在那里您使用了 短路运算符(||) 。 因此,最后两个任务不会发生。和值和保持

  • 这不是重复。“object”表达式是关键字。 我正在尝试将Timber Android库与 https://github.com/orhanobut/logger 集成,我需要一个自定义的LogStrategyTimber来满足我的需求。 我想出了这个逻辑。但是我在初始化遇到了困难 customLogStrategyForTimber从未初始化。有更好的方法来实现这个逻辑吗?尝试在第一个overr

  • 上周我更新了Kotlin 1.5,昨天看到谷歌打算让Jetpack成为设计UI的首选选项后,我想做一些测试。 问题是将我的项目更新为静态编程语言1.5,当尝试构建项目时,我得到以下错误: 静态编程语言1.5与Jetpack Compose不兼容吗?在谷歌搜索问题后,我找到了版本,其中提到了Jetpack Compose,但不是以“不兼容”的方式。 你对此有任何答案吗?我应该使用吗?在这种情况下,我

  • 我有这个非常简单的打字稿文件: 然后我运行: 打字稿编译器(版本1.8.7,OS X)抱怨: 我如何修复这个错误?谢谢你。