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

Kotlin中MutableList的init: (index: Int)->Contact参数需要传入什么值?

报错原因

你触发类型报错的根因是 MutableList<Contact>(10, "init: (inded: Int)->Contact") 这行代码的第二个参数传值不符合类型规范:
Kotlin 中指定初始容量的 MutableList 构造方法参数要求如下:

  • 第一个参数:Int 类型,代表列表的初始容量
  • 第二个参数:函数类型 (index: Int) -> T,作用是通过下标生成列表对应位置的初始元素
    你现在给第二个参数传入了一个字符串字面量,完全不匹配函数类型要求,因此触发类型不兼容报错。

修复方案

结合你的筛选业务场景,你不需要预设列表大小,直接创建空的可变列表即可,把报错行替换为下面的代码:

val resultList = mutableListOf<Contact>()

如果确实有需要使用 init 参数的场景(比如要初始化指定大小、每个位置都填充默认 Contact 对象的列表),可以按照如下方式传值,符合 (Int) -> Contact 的类型要求:

// 示例:初始化容量为10,每个下标位置生成一个id等于下标的默认Contact对象
val resultList = MutableList<Contact>(10) { index ->
    Contact(
        id = index,
        name = "",
        description = "",
        recipe = ""
    )
}

额外代码优化提示

你的现有代码还有两处可调整的问题:

  • 筛选逻辑不要写在 LazyColumn 的 content 作用域内,每次界面重组都会重复执行,建议把 filteredContacts 用 remember 加 derivedStateOf 包裹,依赖搜索词自动更新结果
  • Contact 类没有定义 contains 方法,你直接调用 contact.contains(searchText.lowercase()) 会触发编译报错,需要自行实现匹配逻辑,比如判断 name、description 等字段是否包含搜索关键词

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:45:05