gpt4 book ai didi

dependency-injection - 如果 Dagger/Hilt 是抽象类或接口(interface),它们在模块中有区别吗?

转载 作者:行者123 更新时间:2023-12-04 17:21:18 29 4
gpt4 key购买 nike

我有一个问题,也许有经验的人可以让我更清楚一些。我将 Hilt 模块编写为接口(interface)或抽象类。这两者之间有实际区别吗?例如,我在我的应用程序的 Hilt 中更改了以下模块,但它仍然有效。

@Module
@InstallIn(ViewModelComponent::class)
abstract class LocalModules {

@Binds
@ViewModelScoped
abstract fun bindTemporaryImageFileFactory(factory: TemporaryImageFileFactoryImpl): TemporaryImageFileFactory

}

@Module
@InstallIn(ViewModelComponent::class)
interface LocalModules {

@Binds
@ViewModelScoped
fun bindTemporaryImageFileFactory(factory: TemporaryImageFileFactoryImpl): TemporaryImageFileFactory
}

最佳答案

使用@Binds时,使用interfaceabstract class没有区别。 Dagger 使用这些 @Module 类的 @Binds 方法只是为了了解应该将哪个实现类 (TemporaryImageFileFactoryImpl) 链接到接口(interface) (TemporaryImageFileFactory).

使用此信息,Dagger 生成其 own将接口(interface)与实现链接起来的代码。构建成功后,在IDE中你可以看到无论你使用什么,@Binds方法都会显示为未使用。

关于dependency-injection - 如果 Dagger/Hilt 是抽象类或接口(interface),它们在模块中有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66067710/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com