kotlin - 如何修复所需的 Long 发现 Long?
问题描述
我正在尝试添加两个类型为 Long 的数字
@Entity
data class Monitor(
@PrimaryKey
@NonNls
var parentUsageDuration: Long? = 0L,
var childUsageDuration: Long ?= 0L
)
有两个号码
var parentTime = homeViewModel.getMonitorAllDataItem()?.parentUsageDuration
var childTime = homeViewModel.getMonitorAllDataItem()?.childUsageDuration
当我尝试添加这两个数字时
var totalTime = parentTime +childTime
我收到错误
required Long found Long ?
无法添加这两个号码请帮我解决这个问题。
解决方案
问题是,parentTime
数字childTime
不仅仅是数字。它们是数字或空值 - 注意?
char 中的字符Long?
。不可能对空值执行数学运算,因此我们需要决定在空值的情况下要做什么。最常见的解决方案是:
totalTime
如果至少有一个数字为空,则设置为空:
var totalTime = if (parentTime == null || childTime == null) null else parentTime + childTime
用一些默认值替换空值,例如0
:
var totalTime = (parentTime ?: 0) + (childTime ?: 0)
或者,如果我们确定这些值实际上不能为空:
var totalTime = parentTime!! + childTime!!
如果是这种情况,那么您还应该考虑将parentUsageDuration
和的类型更改childUsageDuration
为 not-nullable Long
,但这实际上取决于您的具体情况。
推荐阅读
- regex - 如何限制正则表达式中 2 个相邻字符串的总长度?
- solr - SOLR 精确搜索关闭词干提取
- python-3.x - 什么情况下过滤器可以拒绝在 Python 中工作?
- vue.js - 带有 v-for 的 srcset
- python - 为 MAC 版本 10.14.6 安装 python
- hotchocolate - 使用 Pure Code First Hot Chocolate GraphQL 的特定属性的日期类型
- javascript - Firestore 获取与值数组中的项目匹配的任何值
- amazon-s3 - S3 存储桶策略和 EMR - 示例
- javascript - ReactJS:为什么我的反应主应用程序组件在由键盘键而不是鼠标单击触发时会呈现多次?
- python - 使用字典值作为函数参数?