Saltar al contenido

¿Cómo clonar objetos en Kotlin?

Luego de de esta prolongada recopilación de datos dimos con la respuesta este enigma que suelen tener algunos usuarios. Te brindamos la respuesta y esperamos que sea de mucha ayuda.

Solución:

Para data classpuede usar el compilador generado copy() método. Tenga en cuenta que realizará una copia superficial.

Para crear una copia de una colección, utilice el toList() o toSet() métodos, según el tipo de colección que necesite. Estos métodos siempre crean una nueva copia de una colección; también realizan una copia superficial.

Para otras clases, no existe una solución de clonación específica de Kotlin. Puedes usar .clone() si se adapta a sus requisitos, o cree una solución diferente si no lo hace.

Puede usar la biblioteca Gson para convertir el objeto original en una cadena y luego volver a convertir esa cadena en un tipo de objeto real, y tendrá un clon. Aunque este no es el uso previsto de la biblioteca Gson, que en realidad se usa para convertir entre JSON y otros tipos de objetos, he ideado este método para resolver el problema de la clonación en muchas de mis aplicaciones de Android basadas en Kotlin. Mira mi ejemplo. Coloque esta función en la clase/modelo del que desea crear un clon. En mi ejemplo, estoy clonando un Animal tipo de objeto, así que lo pondré en el Animal clase

class Animal
 fun clone(): Animal 
 
   val stringAnimal = Gson().toJson(this, Animal::class.java)
   return Gson().fromJson(stringAnimal, Animal::class.java)
 

       

Entonces úsalo así:

val originalAnimal = Animal()
val clonedAnimal = originalAnimal.clone()

un kotlin data class es fácil de clonar usando .copy()

Todos los valores se copiarán superficialmente, asegúrese de manejar cualquier lista/array contenido cuidadosamente.

Una característica útil de .copy() es la capacidad de cambiar cualquiera de los valores en el momento de la copia. Con esta clase:

data class MyData(
    val count: Int,
    val peanuts: Int?,
    val name: String
)
val data = MyData(1, null, "Monkey")

Puede establecer valores para cualquiera de las propiedades.

val copy = data.copy(peanuts = 100, name = "Elephant")

el resultado en copy tendría valores (1, 100, "Elephant")

Recuerda algo, que puedes optar por la opción de aclarar .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *