我发现 Kotlin 很有意思,但我也发现很难找到任何关于如何正确处理 null 的足够可理解的文档。
我是一名 Java 开发人员,所以我应该能够非常轻松地转向 kotlin,但我发现自己在简单的东西上挣扎。
以下 SQL 查询:
@Query(value = "FROM Address a WHERE a.userId = :userId")
fun findAddressByuserId(@Param("userId") userId: String) : List<Address>?
我可以以某种方式摆脱List<Address>?
末尾的 ?SQL 可能不返回任何内容,因此生成 null。
在查询之后,我尝试映射结果,但现在由于可为空的列表,这需要!!
。
customerAddresses!!.map { a -> a.email = email.email }
谢谢!
如果 SQL 不返回任何内容,则对应于 0 找到的项目,即空列表,而不是根本没有列表。我也会相应地建模:
@Query(value = "FROM Address a WHERE a.userId = :userId")
fun findAddressByUserId(@Param("userId") userId: String) : List<Address>
这也可以让您在使用时省略!!
。
我不知道你正在使用的库 - 但如果它严格不允许返回类型不可为空,那么你可以编写一个只调用另一个的包装函数。在这种情况下,请使用 ?:
(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()