在一个Android kotlin项目中,看到了这个@set:Inject
,但是找不到很好的解释。有人知道吗?
object Controller {
@set:Inject
lateinit var someData: SomeData
答案 0 :(得分:5)
@Inject
批注可用于方法,构造函数或字段:
@Target(value={METHOD,CONSTRUCTOR,FIELD})
重要的是要记住,Java代码将从此Kotlin代码生成,并且对于Kotlin中的一条语句,您可以具有多个Java元素,这就是@set:Inject
明确指定@Inject
批注应应用于将以Java生成的setter。
如果未定义使用场所目标,会发生什么? Official documentation提供了很好的解释:
如果您未指定使用场所目标,则根据 到使用的注释的@Target注释。如果有 多个适用目标, 使用以下列表:
- param(构造函数参数);
- 属性(带有此目标的注释对Java不可见);
- field;