【问题标题】:Kotlin mapper with possible null values [duplicate]具有可能的空值的 Kotlin 映射器 [重复]
【发布时间】:2019-10-28 22:31:06
【问题描述】:

我有一堆数据类,其中的值需要可以为空,因为数据库可能会为某些字段返回空值。

但是,当映射到 ApiClass 时,这些值应替换为空字符串或某些 Long 值(无空值)

但我不知道如何将Long? 转为Long

例如在映射器中

dueDilligence.info.extendedInfo.income.let { it }

据我所知,如果 Long 是实际 long 而不是 null,则仅应将此值传递给 ApiClass 构造函数,如果它为 null,我会假设它将保持在构造函数中给出的默认值(在这种情况下为 0)

dueDilligence.info.extendedInfo.income 是一个 Long 也可能为 null,但如果为 null,则应映射为 0。

但是既然数据类是长的?并且映射器很长,有 类型不匹配 我似乎无法用 letrun 解决

我也可以写if( attribute == null ) { } 但这会产生太多多余的代码,因为有 50 个属性。

【问题讨论】:

标签: kotlin nullable mapper


【解决方案1】:

您可以使用下面的两个示例,第一个是用“0”替换空值,第二个是从列表中删除空值:

val list = listOf<Long?>(null, 0L, 20L, 15L, 13L, 20L, null, null, 30L, 45L)
fun main(args: Array<String>){
   val listA = list.map { it ?: 0 }

   val listB = list.mapNotNull { it }

   println(listA)
   println(listB)
}

输出是:

  List A [0, 0, 20, 15, 13, 20, 0, 0, 30, 45]
  List B [0, 20, 15, 13, 20, 30, 45]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多