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

285
Views
Cómo escribir captadores en Kotlin

Sé un poco de java y actualmente estoy estudiando kotlin. No puedo descifrar captadores. Tengo una clase y alguna función.

 class Client(val personalInfo: PersonalInfo?){} //class fun sendMessageToClient(client: Client?) { val personalInfo: PersonalInfo? = client?.personalInfo //... }

Según tengo entendido, getter se llama en el código client?.personalInfo . ¿O es un campo de clase, ya que privado no se especifica explícitamente en ninguna parte?

A continuación, quiero agregar algo de lógica al captador, pero aparece un error de que ya existe dicha firma.

 class Client(val personalInfo: PersonalInfo?){ fun getPersonalInfo():PersonalInfo?{ print(personalInfo) return personalInfo } }

Si especifico que el campo es privado, desaparece el error class Client(private val personalInfo: PersonalInfo?) , pero pero el código client?.personalInfo no funcionará

Traté de reescribir el código, pero no puedo averiguar cómo especificar val y pasarle un valor del constructor.

 class Client(personalInfo: PersonalInfo?) { val personalInfo = //?? get() { print("personal info $personalInfo") return personalInfo } }

¿Es posible agregar de alguna manera print al getter y aún usar client?.personalInfo ?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Casi estabas allí. Al crear captadores personalizados en kotlin, debe usar el field de palabra clave cuando desee que se use el valor de la propiedad asociada (puede leer más sobre esto en la documentación de referencia en https://kotlinlang.org/docs/properties.html# backing-fields o en https://www.baeldung.com/kotlin/getters-setters#1-accessing-the-backing-field ):

Cada propiedad que definimos está respaldada por un campo al que solo se puede acceder dentro de sus métodos get() y set() usando la palabra clave de campo especial. La palabra clave de campo se utiliza para acceder o modificar el valor de la propiedad. Esto nos permite definir una lógica personalizada dentro de los métodos get() y set().

Habiendo escrito esto, solo necesita cambiar su código un poco de la siguiente manera:

 class Client(personalInfo: String?) { val personalInfo: String? = personalInfo get() { print("personal info $field") return field } }
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!