Kotlin中的Dagger 2:有没有办法在不使用Module的情况下使用默认参数化构造函数对类进行注入?

时间:2018-11-11 02:29:39

标签: kotlin dagger-2

我想让我的Dagger 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 :(得分:3)

代替使用默认值,您可以编写辅助构造器:

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

就像这样,您要确保默认构造函数未使用@Inject进行注释,并且 Dagger 知道如何创建InjectClass

可选地,我们可以这样做

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