Kotlin:类似的类的双冒号与Lambda
我明白我的第一个第二个例子使用一个lambda函数传入一个单一的参数。我试图理解为什么它会不同于我的第二个样板使用双冒号而不是lambda。 (仍然是一个kotlin newb试图把我的头围绕来自python背景的双冒号)
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
究竟代表什么?
假设有一个类Issuer
, ::Issuer
将是一个对其构造函数的函数引用 。 采用适当数量的参数(本例中为一个)的构造函数将被解析和使用,相当于一个lambda { Issuer(it) }
。
如果没有这样的类,那么将使用一个名为Issuer
的函数并使用一个参数(如果存在的话)。
请参阅: Kotlin中是否有构造函数引用?