我必须Dao
返回简单的对象。如果 object 不存在,则 Room 返回null
,但 Android 应用程序没有崩溃。此外,如果我将该值分配给非空变量,则应用程序中不会发生崩溃。
道:
@Query("SELECT * FROM users WHERE id LIKE :id LIMIT 1")
abstract fun getById(id: Long): User
不崩溃代码:
doAsync {
val user: User = userDao.getById(999) // user 999 not exist, userDao returns null
uiThread {
if (user == null) {
Timber.d("user is $user") // "user is null" in log
} else {
Timber.d("user is ${user.email}")
}
}
}
我有两个问题:
- Room 怎么可能将 Null 值作为 Non-Null 变量返回?
- 将 null 分配给 Non-Null 变量的代码怎么可能没有崩溃?