Как создать экземпляр абстрактного класса в Котлине?

Я столкнулся со следующей проблемой:

Мой код MainActivity:

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... // ERROR: Cannot create instance of an abstract class var db = DataBase().getDataBase(this) // ... } } 

База данных комнаты:

 @Database(entities = arrayOf(DataBaseUser::class), version = 1) abstract class DataBase : RoomDatabase() { val DB_NAME : String = "DataBaseUser" private lateinit var INSTANCE : DataBase fun getDataBase(context: Context): DataBase { if (INSTANCE == null){ INSTANCE = Room.databaseBuilder(context.applicationContext,DataBase::class.java,DB_NAME).build() } return INSTANCE } abstract fun getUserDao(): DataBaseUserDao } 

Я не могу создать экземпляр класса в Котлине. В Java я сделал это так:

 db = AppDataBase.getDataBase(view.getContext()); 

Как я могу получить тот же результат в Котлине?

    Используйте одиночный objectobject Котлин) для хранения экземпляра базы данных Room:

     @Database(entities = arrayOf(DataBaseUser::class), version = 1) abstract class DataBase : RoomDatabase() { abstract fun getUserDao(): DataBaseUserDao } object DatabaseProvider { val DB_NAME : String = "DataBaseUser" private lateinit var INSTANCE : DataBase fun getDataBase(context: Context): DataBase { if (INSTANCE == null) { INSTANCE = Room.databaseBuilder(context.applicationContext,DataBase::class.java,DB_NAME).build() } return INSTANCE } } 

    Применение:

     val db = DatabaseProvider.getDataBase(view.getContext()) 

    Для экземпляра абстрактного класса в Котлине вы используете object: <your class> . Пример:

     abstract class AbstractTest { abstract fun someFun(): Int } fun main(args: Array<String>) { val astractInstance = object : AbstractTest() { override fun someFun(): Int { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } } } 

    Вы можете использовать ниже

     var db = object: DataBase(){ override fun getUserDao(): DataBase{ TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } } 
    Intereting Posts
    Kotlin типа безопасный строитель DSLs, безопасность для самой внешней функции Связывание данных с Kotlin приводит к ресурсу $ NotFoundException Загрузка файла с удаленного устройства и сохранение его на устройстве Android Заявление о создании платформы с сопоставимым Изменение списка фрагментов изменяется в других фрагментах Преобразование метода «Callable <T>» Java в Kotlin Существует ли эквивалент Котлина для библиотеки AssertJ? Недвижимость без геттера в Котлине Библиотека «Столкновение с пространством» вылетает со смертельным исходом 11 (SIGEGV) при вставке и удалении Расширьте Mockito, чтобы убедиться, что Kotlin не работает (в режиме «kotlin») Требуется генерация. Строка найдена kotlin.String Eclipse – Как добавить Kotlin в проект Tomcat – Скомпилируйте файлы Kotlin AND Java Использовать группу в ConstraintLayout для прослушивания событий кликов на нескольких представлениях Динамические формы Android TextView Null после раздувания родительского макета