匕首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_ProvidesAFactoryAModule_Companion_ProvidesAFactory而不是一个AModule_ProvidesAFactory类,而不是具有伴随对象的类