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

Kotlin中将String[]经Any类型转换为ArrayList<String>的实现问题

问题原因

你写的arrayOf(anyObject)是将整个Any类型的数组对象作为新数组的唯一元素存入,后续调用map遍历的时候实际只处理了1个元素(就是原数组对象本身),调用toString()自然会输出数组的内存地址哈希值,无法得到预期的字符串列表。

正确实现方案

方案1:确定类型匹配时的强转实现

如果你可以确定传入的anyObject一定是String[]类型,不存在类型不匹配的场景,可以直接用强制类型转换后转ArrayList:

val result: ArrayList<String> = (anyObject as Array<String>).toCollection(ArrayList())

方案2:安全转换避免崩溃

如果无法保证类型一定匹配,可以用安全转换操作符,类型不匹配时返回默认的空列表(也可以自定义默认值):

val result: ArrayList<String> = (anyObject as? Array<String>)?.toCollection(ArrayList()) ?: arrayListOf()
补充说明

如果传入的anyObject是Java侧的String[]类型,上述代码依然可以正常兼容运行,Kotlin的数组类型和Java数组类型是互通的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:36:02