JvmSerializerReplacement

expect fun <T : Any> JvmSerializerReplacement(serializer: RawSerializer<T>, value: T): Any

Simplifies implementing custom java.io.Serializable (JvmSerializable) logic.

Your class must inherit from JvmSerializable and call this function in the writeReplace() function. This must be used in combination with RawSerializer. Example:

class Foo(val url: Url) : JvmSerializable {
private fun writeReplace(): Any = JvmSerializerReplacement(FooJvmSerializer, this)
}

internal object FooJvmSerializer : JvmSerializer<Foo> {
override fun jvmSerialize(value: Foo): ByteArray =
value.url.toString().encodeToByteArray()

override fun jvmDeserialize(value: ByteArray): Foo =
Foo(Url(value.decodeToString()))
}
actual fun <T : Any> JvmSerializerReplacement(serializer: RawSerializer<T>, value: T): Any
actual fun <T : Any> JvmSerializerReplacement(serializer: RawSerializer<T>, value: T): Any