gpt4 book ai didi

java - 在 Dagger 2 中提供方法

转载 作者:行者123 更新时间:2023-12-02 12:30:04 25 4
gpt4 key购买 nike

我有问题,我不知道为什么,但我的变量没有注入(inject)并且等于 null。我提供这样的方法:

@Provides
@Singleton
fun provideSource(context: Context): DatabaseSource = DatabaseSource(context, Models.DEFAULT, DB_NAME, DB_VERSION)

@Provides
@Singleton
fun provideStoreDB(databaseSource: DatabaseSource): KotlinReactiveEntityStore<Store> = KotlinReactiveEntityStore(KotlinEntityDataStore(databaseSource.configuration))

@Provides
@Singleton
@NotNull
fun provideStores() : Database<Store> = PersistentDatabase(Store::class)

模型 Store 的类:

它是“persistable”类的继承人。

@Entity
data class Store(val id: Long = 0, val name: String = "", val description: String = "", val date: String = "") : DisplayableItem, Persistable

与数据库一起使用的类

@Singleton
class PersistentDatabase <T: Any> (val type: KClass<T>) : Database <T> {
@Inject
internal lateinit var store: KotlinReactiveEntityStore<T>

override fun addResult(item: T): Completable = store.insert(item).toCompletable()

override fun addListResult(item: List<T>): Completable = store.insert(item).toCompletable()

override fun deleteResult(item: T): Completable = store.delete(item)

override fun getAllResults(): Single<List<T>> = (store select type).get().observable().toList()

override fun removeAllResults(): Completable = store.delete(type).get().single().toCompletable()
}

在我的存储库层中,我像这样使用它:

@Inject
lateinit var database: Database<DetectedLanguageText>

fun getHistory(): Single<List<DetectedLanguageText>> {
return database.getAllResults()
.map { it.sortedByDescending { it.date } }
.transitSuccessToEmitter(historyEmitter)
}

但是当我在函数getAllResults中时,变量

    @Inject
internal lateinit var store: KotlinReactiveEntityStore<T>

不注入(inject)并且等于null。为什么它对我不起作用?

最佳答案

我看不到你在 PersistentDatabase 中注入(inject) KotlinReactiveEntityStore 的位置。您只是在提供方法中创建一个实例,但没有完成注入(inject)。

关于java - 在 Dagger 2 中提供方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45316994/

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