kotlin - 为什么类的转换在 kotlin 中不起作用?
问题描述
我将这样的列表发送给函数:listOf(IncomeVerificationType::class, IncomeType::class)
,但函数仅返回带有 的地图"id"
。为什么is
不工作?我究竟做错了什么?
功能:
fun sendUpdatedEvent(model: Model, updatedFields: List<Any>): Map<String, Any> {
val fieldToValueMap = mapOf("id" to model.identity.id)
updatedFields.forEach {
when (it) {
is IncomeVerificationType -> fieldToValueMap.plus("incomeVerification" to model.incomeVerification)
is IncomeType -> fieldToValueMap.plus("incomeTypeId" to model.incomeTypeId)
}
}
return fieldToValueMap
}
解决方案
因为IncomeType::class
不是. _ _
的类型是。它引用类本身,而不是类的实例。IncomeType
IncomeType::class
KClass<IncomeType>
要在 when 语句中正确匹配这些类对象,您可以使用常规相等检查而不是“is”检查:
val list = listOf(IncomeVerificationType::class, IncomeType::class)
list.forEach {
when (it) {
IncomeVerificationType::class -> println("IncomeVerificationType")
IncomeType::class -> println("IncomeType")
}
}
推荐阅读
- php - 同时运行的 cron 作业记录处理组合
- java - 如何在 Spring Boot JUnit 5 中对 oracle 存储过程调用进行单元测试
- c# - ComboBox DataSource 没有按我的预期工作
- azure - 更新存储帐户时创建一个事件,它将触发一个事件并在存储队列 Azure 门户中发送一条消息
- java - Java 变量到时间字符串的转换
- karate - 如何验证并关闭使用空手道 UI 单击链接后出现的新选项卡?
- c - 为什么这里的“sum”变量每次迭代都没有更新?
- batch-file - 批处理 - 如何确定特定网络适配器是否已设置为 DHCP?
- python - 如何使异步工作?我无法理解问题
- php -
文件名:wp-content/themes/ewebot/functions.php 文件类型:不是 wordpress.org 的核心、主题或插件文件。详细信息:此文