【发布时间】:2020-02-16 03:09:06
【问题描述】:
我正在通过他们的教程学习 Dagger2,但在 part 5 被阻止。我已经在 Kotlin (jvm) 中实现了所有内容,并且逻辑/行为与本教程的工作顺序相匹配。
但是,我无法创建 SystemOutModule 并且不确定我是否误认为 Dagger 的某个地方,或者我对他们的模块类的翻译。
/**
* Tutorial's Java.
*/
@Module
abstract class SystemOutModule {
@Provides
static Outputter textOutputter() {
return System.out::println;
}
}
/**
* My Kotlin.
*/
@Module
object SystemOutModule {
@JvmSuppressWildcards
@Provides
fun textOutputter(): (String) -> Unit = { println(it) }
}
构建失败并出现以下错误:
~~ ./gradlew clean build
> Task :app:kaptKotlin FAILED
e: /Users/eric/IdeaProjects/atm/app/build/tmp/kapt3/stubs/main/com/es0329/atm/CommandRouterFactory.java:7: error: [Dagger/MissingBinding] com.es0329.atm.Outputter cannot be provided without an @Provides-annotated method.
public abstract interface CommandRouterFactory {
^
com.es0329.atm.Outputter is injected at
com.es0329.atm.HelloWorldCommand(outputter)
com.es0329.atm.HelloWorldCommand is injected at
com.es0329.atm.HelloWorldModule.helloWorldCommand(command)
com.es0329.atm.Command is injected at
com.es0329.atm.CommandRouter(command)
com.es0329.atm.CommandRouter is provided at
com.es0329.atm.CommandRouterFactory.router()
FAILURE: Build failed with an exception.
【问题讨论】:
标签: java kotlin dependency-injection dagger-2 kapt