gpt4 book ai didi

android - 在实现 Room Database 时,我们为什么可以创建一个 Interface 的对象?

转载 作者:行者123 更新时间:2023-12-02 13:44:01 27 4
gpt4 key购买 nike

有人可以向我解释一下吗!我们都知道我们可以不是 在 Java 和 Kotlin 中创建接口(interface)的对象。我们只能从一个类中实现一个接口(interface)。怎么会,当谈到 房间数据库 我们能够创建 的对象道 这实际上是 Repository 类中的一个接口(interface)。

以下是道接口(interface):

import androidx.lifecycle.MutableLiveData
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query

@Dao
interface WordDao {

@Query("SELECT * from word_table ORDER BY word ASC")
fun getAlphabetizedWords(): MutableLiveData<ArrayList<Word>>

@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insert(word: Word)

@Query("DELETE FROM word_table")
suspend fun deleteAll()
}

以下是使用 Dao 作为对象的 Repository 类:
import androidx.lifecycle.MutableLiveData

class WordRepository(private val wordDao: WordDao) {

val allWords: MutableLiveData<ArrayList<Word>> = wordDao.getAlphabetizedWords()

suspend fun insert(word: Word) {
wordDao.insert(word)
}
}

最佳答案

在这种情况下,您不创建 WordDao,Room 会生成一个实现 WordDao 的类,并且 room 会为该类创建代码。因此,当您获得 WordDao 时,您会生成一个实现 WordDao 的教室。

关于android - 在实现 Room Database 时,我们为什么可以创建一个 Interface 的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60751683/

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