Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

146
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda