Kotlin reference说我可以使用object关键字创建一个单例,如下所示:
object DataProviderManager {
fun registerDataProvider(provider: DataProvider) {
//
}
}
但是,我想将一个参数传递给该对象 . 例如,Android项目中的ApplicationContext .
有没有办法做到这一点?
Kotlin reference说我可以使用object关键字创建一个单例,如下所示:
object DataProviderManager {
fun registerDataProvider(provider: DataProvider) {
//
}
}
但是,我想将一个参数传递给该对象 . 例如,Android项目中的ApplicationContext .
有没有办法做到这一点?
4 回答
由于对象没有构造函数,因此我在以下步骤中将值注入初始设置 . 您可以随意调用该函数,并且可以随时调用它来修改值(或根据您的需要重新构建单例) .
Kotlin有一个名为Operator overloading的功能,允许您将参数直接传递给对象 .
还有两个本机Kotlin注入库非常容易使用,并且有其他形式的单例,包括每个线程,基于密钥等 . 不确定是否在您的问题的上下文中,但这里是两者的链接:
Injekt(我的,我是作者):https://github.com/kohesive/injekt
Kodein(类似于Injekt):https://github.com/SalomonBrys/Kodein
通常在Android中,人们使用这样的库,或者Dagger等人来完成参数化单例,确定它们的范围等 .
我建议您使用此表单在kotlin借记的siglot中传递参数,即构造函数被剥夺和阻止的对象:
}
你在活动中这样称呼它