kapt {
arguments {
arg(“dagger.formatGeneratedSource”, “disabled”)
arg(“dagger.gradle.incremental”, “enabled”)
}
}
复制代码
使用 Qualifier 作为 field 的属性
在 Kotlin 的某个 property 上添加注解时,不清楚最终 Java 是否能够在该 property 的 field 或者 method 中获取到该注解。在注解之前添加 field: 前缀能够确保 qualifier 会作用到正确的地方 (查看 官方文档 获取更多详情)。
✅ 将 qualifier 作用于一个已注入的 field 的正确方法如下:
@Inject @field:MinimumBalance lateinit var minimumBalance: BigDecimal
复制代码
❌ 下面的做法是不对的:
@Inject @MinimumBalance lateinit var minimumBalance: BigDecimal
// @MinimumBalance 被忽略了
复制代码
忘记添加 field: 如果在 Dagger 中存在一个不匹配该类型的实例,则可能会导致注入到错误的对象中。
在 Dagger v2.25 版本中已经修复该问题了,如果您使用的是该版本,之前这样的写法会出现问题,现在不会了。
@Inject @MinimumBalance lateinit var minimumBalance: BigDecimal
// 已修复:@MinimumBalance 不