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

Kotlin接口实现类HashSet元素无法持久化问题求助

问题分析与解决方案

错误原因

你在main函数里创建了两个完全独立的Supa实例:

  • 第一个实例调用later()方法后,它自己的players集合确实添加了元素
  • 第二个是全新的实例,它的players集合从未被修改,所以输出空数组

修正后的代码

interface Test {
    val players: HashSet<String>
}

class Supa: Test {
    override val players = hashSetOf<String>()
    fun later() {
        players.add("new player")
    }
}

fun main() {
    // 创建单个实例并复用
    val supaInstance = Supa()
    supaInstance.later()
    println(supaInstance.players) // 输出 [new player]
}

接口与集合的补充说明

  1. 你的接口定义符合需求:声明val players: HashSet<String>,强制子类必须提供HashSet类型的实现,满足内存占用优化的要求。
  2. 子类中override val players = hashSetOf<String>()的写法正确,每个Supa实例会初始化独立的HashSet,元素会持久化在该实例的生命周期内。
  3. 如果需要多个实例共享同一集合,可将players声明为companion object内的属性,但这不符合“每个子类实现并填充自定义值”的需求,不推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:33:34