Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Serializable
- sealed class Order(
- open val ownerId: String,
- open val member: Member,
- open val title: String,
- open val price: Double
- ) {
- @Serializable
- class OrderOwner(
- ownerId: String,
- member: Member,
- title: String,
- price: Double
- ) : Order(ownerId, member, title, price) {
- @Serializer(forClass = OrderOwner::class)
- companion object : KSerializer<Order> {
- override val descriptor: SerialDescriptor =
- StringDescriptor.withName("MemberInfo")
- @UseExperimental(ExperimentalStdlibApi::class)
- override fun serialize(encoder: Encoder, obj: Order) {
- encoder.encodeString(obj.ownerId)
- encoder.encodeString(obj.member.serialize())
- encoder.encodeString(obj.title)
- encoder.encodeDouble(obj.price)
- }
- @UseExperimental(ExperimentalStdlibApi::class)
- override fun deserialize(decoder: Decoder): Order {
- return OrderOwner(
- decoder.decodeString(),
- decoder.decodeString().deserialize(),
- decoder.decodeString(),
- decoder.decodeDouble()
- )
- }
- }
- }
- @Serializable
- class OrderReceiver(
- ownerId: String,
- member: Member,
- title: String,
- price: Double
- ) : Order(ownerId, member, title, price) {
- @Serializer(forClass = OrderReceiver::class)
- companion object : KSerializer<Order> {
- override val descriptor: SerialDescriptor =
- StringDescriptor.withName("MemberInfo")
- @UseExperimental(ExperimentalStdlibApi::class)
- override fun serialize(encoder: Encoder, obj: Order) {
- encoder.encodeString(obj.ownerId)
- encoder.encodeString(obj.member.serialize())
- encoder.encodeString(obj.title)
- encoder.encodeDouble(obj.price)
- }
- @UseExperimental(ExperimentalStdlibApi::class)
- override fun deserialize(decoder: Decoder): Order {
- return OrderReceiver(
- decoder.decodeString(),
- decoder.decodeString().deserialize(),
- decoder.decodeString(),
- decoder.decodeDouble()
- )
- }
- }
- }
- override fun toString(): String {
- return "Order(member=$member, title=$title, price=$price)"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment