WordRoomDatabase. java
abstract class WordRoomDatabase extends RoomDatabase {
abstract WordDao wordDao();
private static volatile WordRoomDatabase INSTANCE;
private static final int NUMBER_OF_THREADS = 4;
static final ExecutorService databaseWriteExecutor =
Executors.newFixedThreadPool(NUMBER_OF_THREADS);
static WordRoomDatabase getDatabase(final Context context) {
if (INSTANCE == null) {
synchronized (WordRoomDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext()
,WordRoomDatabase.class,"word_database")
.addCallback(sRoomDatabaseCallback)
.build();
}
}
}
return INSTANCE;
}
private static WordRoomDatabase.Callback sRoomDatabaseCallback = new WordRoomDatabase.Callback() {
@Override
public void onOpen(@NonNull SupportSQLiteDatabase db) {
super.onOpen(db);
databaseWriteExecutor.execute(()->{
WordDao wordDao = INSTANCE.wordDao();
wordDao.deleteAll();
Word word = new Word("Hello");
wordDao.insert(word);
word = new Word("World");
wordDao.insert(word);
});
}
};
}
WordRepository. java
class WordRepository {
private WordDao mWordDao;
private LiveData<List<Word>> mAllWords;
WordRepository(Application application) {
WordRoomDatabase wordRoomDatabase
= WordRoomDatabase.getDatabase(application);
mWordDao = **wordRoomDatabase.wordDao();**
mAllWords = mWordDao.getAlphabetizedWords();
}
LiveData<List<Word>> getAllWords() {
return mAllWords;
}
void insert(Word word) {
WordRoomDatabase.databaseWriteExecutor.execute(() -> {
mWordDao.insert(word);
});
}
}
во время поиска реализации метода wordDao (), было найдено только использование метода wordDao () в только два места в проекте, ниже изображение, показывающее использование метода wordDao (). ![enter image description here](https://i.stack.imgur.com/BvGQf.png)
найдено ниже вопроса, но не найдено решение абстрактный метод используется без реализации
Пожалуйста, объясните мне, как этот метод вызывается без любая реализация во время выполнения?