У меня есть этот код для получения одноэлементного экземпляра моей базы данных Room
, но во всем моем коде я получаю предупреждения lint при использовании Dao
, что это может вызвать исключение нулевого указателя, потому что getInstance может вернуть обнуляемое значение
abstract class DatabaseInstance : RoomDatabase() {
// ... Dao's
companion object {
private var INSTANCE: DatabaseInstance? = null
fun getInstance(context: Context): DatabaseInstance? {
if (INSTANCE == null) {
synchronized(DatabaseInstance::class) {
INSTANCE = Room.databaseBuilder(context.applicationContext,
DatabaseInstance::class.java, "my_database.db")
.allowMainThreadQueries().fallbackToDestructiveMigration().build()
}
}
return INSTANCE
}
fun destroyInstance() {
INSTANCE = null
}
}
}
Я попытался выяснить, могу ли я использовать частную и общедоступную переменную экземпляра, где у публики будет собственный пользовательский метод get и делать то, что делает getInstance, но я не могу передать в него контекст.
Так как getInstance
действительно никогда не вернет ноль, как я могу настроить все так, чтобы ошибка линта исчезла?
И нет, я не хочу просто подавлять ошибку lint