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

147
Views
¿Firma de método de clase basada en el tipo proporcionado en Kotlin?

Estoy tratando de reducir el texto estándar en algo en lo que estoy trabajando y me pregunto si algo es posible. Sospecho que no lo es, pero estaba buscando confirmación.

 class Something<T> { private val list = mutableListOf<T>() fun addToList(value: T) = list.add(value) }

Entonces, si quisiera usar esto con una clase como:

 class Data(number: Int, letter: Char)

Tendría que usar addToList como:

 addToList(Data(1,"a"))

¿Hay alguna forma de usar el tipo T suministrado para construir dinámicamente el método addToList? De modo que la clase sería instanciada como:

 val thing = Something<Data>()

pero luego addToList fueron llamados como

 addToList(1,"a")

Como dije, no creo que esto sea posible, pero estaba buscando confirmación.

Lo que realmente estaba tratando de hacer era pensar en algo que me permitiera hacer esto sin declarar Data en absoluto, sino simplemente definir la estructura y el subsiguiente método addToList cuando se creó una instancia de Something(); no estoy seguro de haberlo descrito. todo eso bien, pero si alguien tiene alguna sugerencia en general sobre eso, ¡se lo agradecería!

¡Gracias!

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Hay clases de tupla Par y Triple proporcionadas en la biblioteca estándar que le permite evitar declarar una clase para combinaciones simples de valores. Si necesita más de 3 parámetros de diferentes tipos, deberá crear su propia clase o usar una biblioteca que proporcione clases de tupla más grandes. Si todos los tipos son iguales, puede usar List en lugar de una tupla.

En mi opinión, incluso Triple lo está presionando y cualquier cosa con más de dos propiedades distintas debería tener su propia clase de datos definida.

 class Something<A, B> { private val list = mutableListOf<Pair<A, B>>() fun addToList(valueA: A, valueB: B) = list.add(Pair(valueA, valueB)) } val something = Something<Int, String>() something.addToList(1, "a")

Un enfoque alternativo si desea mantener la flexibilidad de su clase Algo para contener cualquier cosa sería usar una función de extensión.

 class Something<T> { private val list = mutableListOf<T>() fun addToList(value: T) = list.add(value) } fun <A, B> Something<Pair<A, B>>.addToList(valueA: A, valueB: B) = addToList(Pair(valueA, valueB)) val something = Something<Pair<Int, String>>() something.addToList(1, "a")
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!