我正在从这里上课:https://dagger.dev/tutorial/07-two-for-the-price-of-one

当我更改代码时

@Module
abstract class HelloWorldModule {
    @Binds
    abstract fun helloWorldCommand(command: HelloWorldCommand): Command
}

进入
@Module
abstract class HelloWorldModule {
    @Binds
    @IntoMap
    @StringKey("hello")
    abstract fun helloWorldCommand(command: HelloWorldCommand): Command
}

我收到错误消息:
error: [Dagger/MissingBinding] Map<String,? extends Command>
cannot be provided without an @Provides-annotated method.

我在这里想念的是什么?在Kotlin上不起作用?

最佳答案

谢谢@David Medenjak,您是对的!
上面的代码还可以,问题在于缺少@JvmSuppressWildcards,所以我的类CommandRouter现在看起来像:

@JvmSuppressWildcards
class CommandRouter @Inject constructor(
    val outputter: Outputter,
    val commands: Map<String, Command>
) {
// ...
}

09-09 22:38