获取kotlinx.serialization中的类的序列化器

问题描述

假设C是可序列化的类:

@Serializable
class C

我至少有四种获取此类的序列化器的方法

  1. Companion(?)函数。实际上,IDEA不允许我去声明,所以我认为它是一种由编译器生成的合成函数
val s = C.serializer()
  1. serializer()调用,带有类型化参数:
val s = serializer<C>()
  1. KClass实验扩展:
val c = C()
val s1 = C::class.serializer()
val s2 = c::class.serializer()
  1. serializer()半实验超载:
val c = C()
val s1 = serializer(C::class.createType())
val s2 = serializer(c::class.createType())

后两种方法似乎更强大:例如,我可以将其用于多态序列化,以获取抽象类型实例的实际KClass并选择正确的序列化器。

我有几个问题:

  1. 实际上存在通过类型获取序列化器的哪些方法,并且更可取的是哪种方法
  2. 据我了解,我可以为一个注册几个序列化器,那么在每种情况下我都可以得到哪个?
  3. 假设我已经使用@Serializable(with=...)为类注册自定义序列化程序,是否可以通过某种方式为其获取标准序列化程序?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)