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

Kotlin序列化报错:CustomConvertible未在Convertible范围内注册多态序列化

解决Kotlin多态序列化异常问题

问题核心是密封接口Convertible未标注@Serializable注解。尽管你将接口声明为sealed,但kotlinx.serialization要求多态序列化的基类(密封类/接口)必须显式添加@Serializable,才能让编译器自动生成多态序列化器并注册所有密封子类。

修改后的代码

@Serializable // 新增此注解
sealed interface Convertible {
    fun convertUserInput(value: String): String
}

@Serializable
@SerialName("CustomConvertible")
class CustomConvertible() : Convertible {
    override fun convertUserInput(value: String): String {
        return ""
    }
}

@Serializable
class DTOAttribute(val convertibles: List<Convertible> = emptyList())

原理说明

对于密封类/接口的多态序列化,kotlinx.serialization的核心规则:

  • 基类必须标记@Serializable,这是触发多态序列化逻辑的必要条件
  • 所有密封子类只要标记@Serializable(可搭配@SerialName定义序列化后的标识),就会被编译器自动注册到基类的多态序列化器中,无需手动注册

你的原代码因基类缺少@Serializable,导致序列化框架无法识别这是需要处理多态的可序列化类型,因此抛出子类未注册的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:24:10