我有一堆数据类,其值必须为空,因为某些字段数据库可能会返回null。
但是,当映射到ApiClass时,这些值应替换为空字符串或某些Long值(无null)
但是我不知道如何将Long?
变成Long
例如在我的mapper中
dueDilligence.info.extendedInfo.income.let { it }
据我所知,如果Long是实际的long而不是null,则仅应将此值传递给ApiClass构造函数,如果为null我将假定它将保留为Constructos中给出的默认值(在这种情况下为0)
dueDilligence.info.extendedInfo.income是一个Long,也可能为null,但如果为null,则应将其映射为0。
但是由于数据类为Long?并且映射器为Long,存在类型不匹配,我似乎无法用let
或run
我也可以写if( attribute == null ) { }
但这会产生太多多余的代码,因为有大约50个属性。
答案 0 :(得分:0)
您可以使用以下两个示例,第一个示例是将空值替换为“ 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]