Котлин необязательно, или что-то подобное - PullRequest
1 голос
/ 30 апреля 2019

я нахожу интересным kotlin, но мне также очень трудно найти достаточно понятную документацию о том, как правильно иметь дело с нулями.

Я разработчик Java, так что я должен бытьЯ могу легко поворачиваться к kotlin, но я сталкиваюсь с простыми вещами.

следующий запрос SQL:

 @Query(value = "FROM Address a WHERE a.userId = :userId")
 fun findAddressByuserId(@Param("userId") userId: String) : List<Address>?

Могу ли я как-то избавиться от?в конце List<Address>??SQL может ничего не возвращать, поэтому выдает null.

, и после запроса я пытаюсь отобразить результат, но теперь это занимает !! из-за списка Nullable.

customerAddresses!!.map { a -> a.email = email.email }

Спасибо!

1 Ответ

4 голосов
/ 30 апреля 2019

Если SQL ничего не возвращает, это будет соответствовать 0 найденному элементу, т.е. пустой список , а не список вообще. Я также смоделировал бы это соответственно:

@Query(value = "FROM Address a WHERE a.userId = :userId")
fun findAddressByUserId(@Param("userId") userId: String) : List<Address>

Это также позволит вам опустить !! при его использовании.

Я не знаю, какую библиотеку вы используете, но если она строго не позволяет иметь типы возвращаемых значений, не допускающие значения NULL, то вы могли бы написать функцию-обертку, которая просто вызывает другую. Используйте оператор ?: (Elvis) для этого случая:

@Query(value = "FROM Address a WHERE a.userId = :userId")
private fun _findAddressByUserId(@Param("userId") userId: String) : List<Address>?

fun findAddressByUserId(userId: String) : List<Address> =
    _findAddressByUserId(userId) ?: emptyList()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...