dimanche 27 janvier 2019

Passing an abstract class as parameter in Room Database builder

I have seen this implementation in Room database.

There is an abstract class AppDatabase -

@Database(entities = {Task.class}, version = 1) 
public abstract class AppDatabase extends RoomDatabase {
    public abstract TaskDao taskDao();
}

But when you create an Object of this AppDatabase class, you do something like this -

AppDatabase appDatabase =  
Room.databaseBuilder(context, AppDatabase.class, "something").build();

My questions are -

  1. How can you pass an Abstract class directly like this without the Override methods defined ?

    Like, normally we don't use and pass abstract classes like that, if you do something like this in IDE, it throws an error.

  2. Which design pattern is this and how Room handles this type of things internally ?

Aucun commentaire:

Enregistrer un commentaire