You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何解析类型为Any的变量的实际类型?

Kotlin中解析Map值的实际类型并调用指定函数

当然可以通过Kotlin的类型检查与智能转换来解析Any类型value的实际类型,从而安全调用只接受String、Int、Double的sendItem()函数。

核心思路是用when表达式分支匹配不同类型,Kotlin会自动完成智能转换,不需要显式强转。修改后的代码如下:

private fun mapToItems(map: Map<String, Any>?) {
    map?.forEach { key, value ->
        when (value) {
            is String -> sendItem(key, value)
            is Int -> sendItem(key, value)
            is Double -> sendItem(key, value)
            // 可选:处理不支持的类型,比如打日志或抛异常
            else -> println("Key $key 对应的value类型不支持:${value.javaClass.name}")
        }
    }
}

// 对应sendItem的重载函数示例
fun sendItem(key: String, value: String) { /* 实现逻辑 */ }
fun sendItem(key: String, value: Int) { /* 实现逻辑 */ }
fun sendItem(key: String, value: Double) { /* 实现逻辑 */ }

几点说明:

  • 智能转换:当用is判断类型后,Kotlin会自动将value转换为对应类型,直接传入sendItem即可,无需手动强转。
  • 处理装箱类型:如果map里的数字是Java装箱类型(比如Integer、Double),Kotlin的is Int/is Double依然能识别,不需要额外处理。
  • 异常情况:如果存在不支持的类型,可以在else分支里做自定义处理,比如忽略、打印警告或者抛出IllegalArgumentException。

内容的提问来源于stack exchange,提问作者Wafi_ck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:05:28