Абстрактный метод Определен в реализации класса RoomDatabase, не найденной в проекте - PullRequest
0 голосов
/ 23 апреля 2020

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

найдено ниже вопроса, но не найдено решение абстрактный метод используется без реализации

Пожалуйста, объясните мне, как этот метод вызывается без любая реализация во время выполнения?

...