如何解决获取kotlinx.serialization中的类的序列化器
假设C
是可序列化的类:
@Serializable
class C
我至少有四种获取此类的序列化器的方法。
- Companion(?)函数。实际上,IDEA不允许我去声明,所以我认为它是一种由编译器生成的合成函数。
val s = C.serializer()
-
serializer()
调用,带有类型化参数:
val s = serializer<C>()
- KClass实验扩展:
val c = C()
val s1 = C::class.serializer()
val s2 = c::class.serializer()
-
serializer()
半实验超载:
val c = C()
val s1 = serializer(C::class.createType())
val s2 = serializer(c::class.createType())
后两种方法似乎更强大:例如,我可以将其用于多态序列化,以获取抽象类型实例的实际KClass并选择正确的序列化器。
我有几个问题:
- 实际上存在通过类型获取序列化器的哪些方法,并且更可取的是哪种方法?
- 据我了解,我可以为一个类注册几个序列化器,那么在每种情况下我都可以得到哪个?
- 假设我已经使用
@Serializable(with=...)
为类注册了自定义序列化程序,是否可以通过某种方式为其获取标准序列化程序?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。