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

135
Views
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 answers
Answer question

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 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!