Kotlin中的匕首2:有没有一种方法可以在不使用模块的情况下使用默认参数化构造函数为类进行注入?

Kotlin中的匕首2:有没有一种方法可以在不使用模块的情况下使用默认参数化构造函数为类进行注入?,kotlin,dagger-2,Kotlin,Dagger 2,我想让我的匕首2注入下面的类,但不打算使用@Module 所以我把@Inejct构造函数放在下面 它不工作,因为它的投诉 e: [kapt] An exception occurred: java.lang.IllegalStateException: Found multiple @Inject constructors: [InjectClass(java.lang.String), InjectClass()] 有没有办法让它在这里工作?您可以编写一个辅助构造函数,而不是使用默认值:

我想让我的匕首2注入下面的类,但不打算使用@Module

所以我把@Inejct构造函数放在下面

它不工作,因为它的投诉

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

有没有办法让它在这里工作?

您可以编写一个辅助构造函数,而不是使用默认值:

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

这样,您可以确保默认构造函数没有使用@Inject注释,并且Dagger知道如何创建InjectClass

或者,我们可以这样做

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

您可以编写辅助构造函数,而不是使用默认值:

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

这样,您可以确保默认构造函数没有使用@Inject注释,并且Dagger知道如何创建InjectClass

或者,我们可以这样做

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

这样,您就可以确保默认构造函数没有用@InjectCare注释来解释一下:主构造函数没有注释,因为我们不想注入这个构造函数,但是像这样的辅助构造函数您确保默认构造函数没有用@InjectCare注释来解释一下吗主构造函数没有注释,因为我们不想注入这个构造函数,而是第二个构造函数