【问题标题】:dagger 2, what is difference between @set:Inject and @Inject匕首 2,@set:Inject 和 @Inject 有什么区别
【发布时间】:2018-07-25 15:16:08
【问题描述】:

在一个 android, kotlin 项目中,看到这个 @set:Inject 但找不到很好的解释。有谁知道吗?

object Controller {

    @set:Inject
    lateinit var someData: SomeData

【问题讨论】:

标签: android dependency-injection kotlin dagger-2


【解决方案1】:

@Inject 注解可用于方法、构造函数或字段:

@Target(value={METHOD,CONSTRUCTOR,FIELD})

请务必记住,Java 代码将从此 Kotlin 代码生成,对于 Kotlin 中的一条语句,您可以有多个 Java 元素,这就是为什么 @set:Inject 明确指定应将 @Inject 注释应用于将在 Java 中生成的 setter。

如果没有定义使用站点目标会发生什么? Official documentation 提供了很好的解释:

如果您不指定使用站点目标,则根据选择目标 到正在使用的注释的@Target 注释。如果有 多个适用目标,第一个适用的目标来自 使用以下列表:

  • param(构造函数参数);
  • 属性(带有此目标的注释对 Java 不可见);
  • 字段;

【讨论】:

    猜你喜欢
    • 2011-11-25
    • 2011-08-18
    • 1970-01-01
    • 2016-09-15
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2016-10-22
    相关资源
    最近更新 更多