在一个Android的Kotlin项目中,看到了这个
@set:Inject
,但是找不到一个好的解释。有人知道吗?object Controller {
@set:Inject
lateinit var someData: SomeData
@set:Inject
,但是找不到一个好的解释。有人知道吗?object Controller {
@set:Inject
lateinit var someData: SomeData
@Inject
注解可用于方法、构造函数或字段:
@Target(value={METHOD,CONSTRUCTOR,FIELD})
记住,从这个 Kotlin 代码中会生成 Java 代码,对于 Kotlin 中的一个语句,在 Java 中可能有多个元素,这就是为什么 @set:Inject
明确指定应将 @Inject
注解应用于在 Java 中生成的 setter。
如果没有定义 use-site target 会发生什么?官方文档 提供了很好的解释:
如果您没有指定 use-site target,则根据所使用的注解的 @Target 注解选择目标。如果有多个适用的目标,则使用以下列表中的第一个适用目标:
- param(构造函数参数);
- property(此目标的注释对 Java 不可见);
- field;
@Inject
注解是在字段上,还是在getter或setter方法上。 - EpicPandaForce