如何在Kotlin中接收任何类型的可序列化对象(Android)

nle07wnf  于 2022-11-30  发布在  Kotlin
关注(0)|答案(1)|浏览(132)

在Java中,类可以实现java.io.Serializable接口以允许对它们进行序列化,并且任何将可序列化数据作为参数接收的方法都将如下所示:

public void foo(Serializable data) {
    // ...
}

然而,在Kotlin中,我们没有实现一个接口来指示一个对象是可序列化的,相反,我们在一个类上使用@kotlinx.serialization.Serializable注解,这意味着没有一个函数可以接受的类型来覆盖任何可序列化的数据。
我可以创建我自己的接口,并在我创建的任何可序列化类型上实现它,但如果我想传递一个我没有写入函数的对象,例如List<T>HashMap<K, V>等,那就行不通了。
有没有办法编写一个可以接收 * 任何 * 类型的可序列化数据的函数?

qhhrdooz

qhhrdooz1#

这取决于你到底需要什么。但你可以有这样的例子:

public foo<T>(data: T, serializer: KSerializer<T> ) {
       // ...
   }

相关问题