Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

668
Views
Kotlin: el objeto complementario cambia su valor cuando se cambia la variable

Tengo una clase de datos que tiene datos en forma de listas (objetos complementarios). Asigno estas listas a mis variables (listas) en la clase Actividad según mis requisitos. El problema es que cuando cambio alguna lista (a la que se le asignó el valor de la lista de objetos complementarios) en la clase Actividad, la lista de objetos complementarios también cambia. ¿Por qué está pasando esto? ¿Los objetos complementarios están asignados por referencia? ¿Cómo evitar esto? Quiero que si se cambia la lista de variables de la clase de actividad, la lista de objetos complementarios debe conservar su valor.

Lista de datos de mi código

 class DataLists { companion object { val CountryList: List<CountryDataStructure> = listOf( CountryDataStructure(1, "USA"), CountryDataStructure(2, "Canada")) } }

Clase de actividad

 var CountryData = DataLists.CountryList CountryData[0].Name = "United States of America" //Here the Companion object list (CountryList) ie DataList is also changed and have //values "United States of America" and "Canada" while I expect this to have "USA" and "Canada"
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Todo, además de las clases en línea y las primitivas, siempre pasa por una copia de referencia, no una copia de valor profundo. Las clases en línea y las primitivas a veces se pasan por copia de valor, pero la distinción apenas importa ya que son inmutables.

Dado que su clase CountryDataStructure es mutable, debe copiar manualmente tanto la lista como los elementos de la lista, lo que se puede hacer usando la función de iterador de map y la función de copy() :

 val countryData = DataLists.CountryList.map { it.copy() } countryData[0].Name = "United States of America"
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!