代码之家  ›  专栏  ›  技术社区  ›  artem

为什么忽略@Named dependency?

  •  0
  • artem  · 技术社区  · 7 年前

    我有一个模块 Boolean 价值:

    @Module
    class TestModule(private val isTesting: Boolean = false) {
    
        @Provides
        @Singleton
        @Named(nameIsTesting)
        fun provideIsTesting(): Boolean = isTesting
    
        // Companion
        companion object {
            const val nameIsTesting = "is_testing"
        }
    
    }
    

    AppComponent

    @Component(modules = [AppModule::class, TestModule::class])
    @Singleton
    interface AppComponent {
    
        @Named(TestModule.nameIsTesting)
        val isTesting: Boolean
    
        // ...
    }
    

    生成失败:

    [Dagger/MissingBinding] java.lang.Boolean cannot be provided without an @Inject constructor or an @Provides-annotated method.
    public abstract interface AppComponent {
                    ^
          java.lang.Boolean is provided at
              com.app.app.di.component.AppComponent.isTesting()
    

    1 回复  |  直到 7 年前
        1
  •  3
  •   Faiz    7 年前

    尝试使用

    @Named(TestModule.nameIsTesting)
    fun isTesting(): Boolean
    

    而不是

    @Named(TestModule.nameIsTesting)
    val isTesting: Boolean