List<List<Char>>与List<Char>能否合并为List<Any>?附代码咨询
问题解答:List<List> 与 List 相加能否得到 List?
嘿,这个问题问得很精准,咱们直接结合Kotlin的类型系统来唠清楚:
答案是完全可以的,核心原因在于Kotlin中所有类型都继承自Any,而+操作符合并列表时,只要元素类型有共同的超类型就能正常工作。
咱们拆解一下逻辑:
List<List<Char>>里的每个元素是List<Char>,它属于Any的子类型;List<Char>里的每个元素是Char,同样是Any的子类型;
所以当你用+把这两个列表合并时,所有元素都能统一到Any类型下,最终得到List<Any>。
给你看一段可运行的示例代码:
fun main() { val nestedChars: List<List<Char>> = listOf(listOf('a', 'b'), listOf('c')) val plainChars: List<Char> = listOf('d', 'e') // 显式声明合并后的列表类型为List<Any>,编译毫无压力 val combinedList: List<Any> = nestedChars + plainChars // 遍历验证每个元素的类型 combinedList.forEach { item -> when (item) { is List<*> -> println("这是一个字符列表:$item") is Char -> println("这是一个单独的字符:$item") } } }
运行这段代码会输出:
这是一个字符列表:[a, b] 这是一个字符列表:[c] 这是一个单独的字符:d 这是一个单独的字符:e
这里有个小细节要注意:如果你不主动指定List<Any>,编译器会自动推断出两个元素类型的最具体共同超类型——比如Serializable(因为Char和List都实现了这个接口)。但你完全可以把这个推断结果安全地赋值给List<Any>,因为Serializable本身就是Any的子类型。
总之,只要你明确目标类型是List<Any>,合并操作是完全合法且能正常运行的。
内容的提问来源于stack exchange,提问作者Elye
相关产品推荐
相关产品推荐

