匕首2静态提供者方法在kotlin
随着最近版本的匕首2所做的改进之一是具有静态提供方法的可能性。 简单如此:
@Provides static A providesA() { return A(); }
我想知道在kotlin中如何去做这件事? 我试过了
@Module class AModule { companion object { @JvmStatic @Provides fun providesA(): A = A() } }
但是我收到错误消息:
@Provides methods can only be present within a @Module or @ProducerModule
我猜这里的伴侣对象正在发生什么事情,但是我对Kotlin来说是一个很新的东西,我不确定如何做到这一点。 这甚至有可能吗?
谢谢!
我现在不能测试,但我认为这应该工作:
@Module object AModule { @JvmStatic @Provides fun providesA(): A = A() }
虽然我认为zsmb13的解决方案比较好,但我发现了另一个解决方案
@Module class AModule { @Module companion object { @JvmStatic @Provides fun providesA(): A = A() } // add other non-static provides here }
但是,请注意,将有两个生成的类: AModule_ProvidesAFactory
和AModule_Companion_ProvidesAFactory
而不是一个AModule_ProvidesAFactory
类,而不是具有伴随对象的类