我想让我的 Dagger 2 注入以下类并且不打算使用 @Module这样做。
所以我把@Inejct constructor如下
class InjectClass @Inject constructor(var txt: String = "Default")
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为它抱怨
e: [kapt] An exception occurred: java.lang.IllegalStateException: Found multiple
@Inject constructors: [InjectClass(java.lang.String), InjectClass()]
Run Code Online (Sandbox Code Playgroud)
有没有办法让它在这里工作?
您可以编写一个辅助构造函数,而不是使用默认值:
class InjectClass @Inject constructor(var txt: String) {
constructor(): this("Default")
}
Run Code Online (Sandbox Code Playgroud)
像这样,您确保默认构造函数没有注释,@Inject并且Dagger知道如何创建InjectClass.
或者,我们可以这样做
class InjectClass(var txt: String) {
@Inject constructor(): this("Default")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
898 次 |
| 最近记录: |