Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

133
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda