Я думаю, что это семантическая проблема в комнате во время работы в Котлине.
Простой DAO
запрос в комнате можно получить по
@Query("SELECT * FROM Users WHERE id = :id")
fun getUser(id: Int): User
Несмотря на то, что я определил тип возвращаемого значения как User
, а не User?
, этот запрос все еще может возвращать ноль, когда Пользователь не имеет заданного id .
Поэтому, когда вы вызываете эту функцию, вам обязательно нужно проверять возврат null
, как показано ниже
val user = userDao.getUser("someid")
if (user != null){
return user
}
else {
return DEFAULT_USER
}
Но так как мы определили тип возвращаемого значения getUser
как User
, компилятор @kotlin предполагает, что проверка null
является избыточной .
Я что-то упустил? Кто-нибудь может дать какой-то отзыв по этому поводу?