【发布时间】: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。
但是既然数据类是长的?并且映射器很长,有 类型不匹配 我似乎无法用 let 或 run 解决
我也可以写if( attribute == null ) { }
但这会产生太多多余的代码,因为有 50 个属性。
【问题讨论】:
-
那里需要猫王接线员吗?参考:kotlinlang.org/docs/reference/null-safety.html
-
我很确定答案是
takeIf {}?.let {} ?: {},但由于您从未指定要转换的内容的完整示例,因此很难写出答案。