How to clone object in Kotlin?

前端 未结 9 474
清歌不尽
清歌不尽 2020-12-09 07:04

The question is that simple.

Kotlin documentation describes cloning only in accessing Java and in enum class. In latter case clone is just throwing an exception.

9条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-09 07:59

    It's also possible to clone an object using kotlinx.serialization

    import kotlinx.serialization.Serializable
    import kotlinx.serialization.json.Json
    import kotlinx.serialization.json.JsonConfiguration
    
    @Serializable
    class A
    {
        val name: String = "Cloneable class A"
    
        fun clone(): A {
            val json = Json(JsonConfiguration.Stable)
            val jsonStr = json.stringify(serializer(), this)
            return json.parse(serializer(), jsonStr)
        }
    }
    

提交回复
热议问题