代码之家  ›  专栏  ›  技术社区  ›  mleafer

科特林:相似类中的双冒号与Lambda

  •  4
  • mleafer  · 技术社区  · 9 年前

    class Service(services: PluginServiceHub) {
        init {
            services.registerFlowInitiator(Landlord::class.java) { Landlord(it) }
        }
    }
    

    VS

    class Service(services: PluginServiceHub) {
        init {
            services.registerFlowInitiator(IssuanceRequester::class.java, ::Issuer)
        }
    }
    

    什么是 ::Issuer 准确地表示?

    1 回复  |  直到 9 年前
        1
  •  9
  •   hotkey    9 年前

    Issuer ::Issuer a function reference 它的构造函数。将解析并使用具有适当数量的参数(本例中为一个)的构造函数,这相当于lambda { Issuer(it) } .

    如果没有这样一个类,那么一个名为 发行人 取一个参数,如果存在的话。

    请参阅: Are there constructor references in Kotlin?