Genéricos de Kotlin

¿Cómo es posible aplicar un tipo genérico para un método en Kotlin? Sé por ejemplo que puedes hacer lo siguiente:

var someVar: MutableSet<out SomeType> = hashSetOf() 

¿Cómo puedes hacer lo mismo con un método?

 fun <T> doSomething() { } 

Me gustaría hacer que T sea ​​del tipo X o un subtipo de este.

Gracias.

Después de search en Google, la respuesta correcta sería:

 fun <T : X> doSomething() { } 

En realidad out SomeType significa más que "type Parameter puede ser SomeType o cualquiera de sus subtypes", como sugieren sus preguntas.

La palabra key out es la forma de Kotlin de decir que, en este ejemplo, MutableSet es un Productor de SomeType , es decir, es covariante en su parámetro de tipo. Como consecuencia, no podrá llamar a methods como add(t:T) , sino solo aquellos que devuelven T s, como get():T

De vuelta a su pregunta: si se supone que su método acepta types de X o sus subtypes, debe usar "límites":

 fun <T : X> doSomething() { } 

Esto es justo lo que necesita, pero para dejarlo en claro de nuevo, no se puede decir que sea el equivalente a su otro ejemplo.

como @ s1m0nw1 citado, puede usar fun <T : X> doSomething() { }

para limitar el subtipo T de X,

adicional, puedes usar fun <T> doSomething where T : Comparable, T : Cloneable { }

limitar T debe implementar Comparable y Cloneable

como se hace reference aquí https://kotlinlang.org/docs/reference/generics.html

  • Error de compilation de Kotlin en Android Studio en << intent.putExtra ("cadena", it.getString ("cadena") >>
  • Color de background e image arrastrando en Scroll en recyclerView Android usando Group Adaptor
  • ¿Cómo definir el object dentro de la jerarquía genérica sellada?
  • Implementar Hashmap con diferentes types de valores en Kotlin
  • Intentando excluir el campo cuando se persiste la class de datos de kotlin como documento en Google Cloud Firestre
  • Corda: Agregar múltiples estados de salida en una sola transacción
  • Kotlin: Lista modificable (inmutable) a través del reparto, ¿es legítimo?
  • ¿Cómo obtengo las funciones declaradas de una class Kotlin (KClass en M12)?
  • Kotlin: properties ignoradas @ persisten por Sugar ORM
  • Cómo hacer comprobaciones nulas con las funciones de extensión de Kotlin en una actividad de Android
  • Firebase Firestre ¿cómo enumerar los documentos autorizados?