Dagger2 & Kotlin: @Binds не работает с @IntoMap - PullRequest
0 голосов
/ 20 марта 2020

Я делаю урок отсюда: 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?

1 Ответ

0 голосов
/ 23 марта 2020

Спасибо @David Medenjak, вы были правы! Выше код в порядке, проблема была с отсутствующим @JvmSuppressWildcards, поэтому мой класс CommandRouter теперь выглядит так:

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