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

132
Vistas
T excepto una clase

Supongamos que tengo una clase llamada Devil

 class Devil

y tengo un método llamado support

 fun <T> support(t : T){ }

Quiero restringir esta función para que solo acepte clases que no sean Devil (todas las clases en el mundo, pero no Devil ). Algo como

 fun <T except Devil> support(t : T){ }
  • ¿Cómo hago esto en Kotlin? ¿Es esto posible?
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Es muy probable que se trate de un problema XY, así que no aplique esta solución sin considerar otra cosa.

Una forma de lograr esto es declarar una sobrecarga no genérica de support() con el tipo explícito Devil y desaprobar esa función con el nivel ERROR :

 fun <T> support(t: T) { // do your stuff } @Deprecated("support() cannot be used with type Devil", level = DeprecationLevel.ERROR) fun support(devil: Devil) { error("NOPE.") }

Tenga en cuenta que esto también excluiría los subtipos de Devil , que no se indica explícitamente en su pregunta, pero podría ser lo que desea.

Sin embargo, nada impide que los usuarios solucionen esto llamando explícitamente a la sobrecarga genérica especificando un tipo en <...> :

 support<Devil>(Devil()) // compiles fine support<Any>(Devil()) // compiles fine

De manera similar, como señaló @gidds, este enfoque tampoco evita la compilación si pasa una variable con un tipo estático que no es Devil , incluso si contiene una instancia de Devil (porque el compilador elegirá la sobrecarga genérica en ese caso ):

 val hiddenDevil: Any = Devil() support(hiddenDevil) // compiles fine
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