Dagger 2 в Kotlin: есть ли способ сделать инъекцию для класса с параметризованным конструктором по умолчанию без использования Module? - PullRequest
0 голосов
/ 11 ноября 2018

Я хочу, чтобы мой Кинжал 2 вводил следующий класс и не планирует использовать @Module для этого.

Поэтому я положил @Inejct constructor, как показано ниже

class InjectClass @Inject constructor(var txt: String = "Default")

Не работает, так как жалуется

e: [kapt] An exception occurred: java.lang.IllegalStateException: Found multiple 
@Inject constructors: [InjectClass(java.lang.String), InjectClass()]

Есть ли способ заставить его работать здесь?

1 Ответ

0 голосов
/ 11 ноября 2018

Вместо использования значения по умолчанию вы можете написать вспомогательный конструктор:

class InjectClass @Inject constructor(var txt: String) {
    constructor(): this("Default")
}

Таким образом, вы убедитесь, что конструктор по умолчанию не помечен @Inject и Кинжал знает, как создать InjectClass.

По желанию, мы могли бы сделать это

class InjectClass(var txt: String) {
    @Inject constructor(): this("Default")
}
...