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

212
Visualizações
Kotlin: implemente la interfaz genérica varias veces con diferentes subclases (la clase base es una restricción)

Mensaje de error: el parámetro de tipo E de 'SchedulableInserter' tiene valores incoherentes: incidente, asignación

Básicamente, tengo una clase abstracta Programable. También tengo dos clases de Incidente (evento único, como una marca de tiempo) y una clase de Asignación (Básicamente un Incidente pero con una duración también). Tengo una Actividad Principal, donde quiero insertar Instancias en un SQLiteDB. Quiero tener un método de inserción diferente para cada subclase de Schedulable para manejar fácilmente las diferencias entre ellos.

//InsertorProgramable.kt

 interface SchedulableInserter<E> where E : Schedulable{ fun onInsertSchedulable(item:E) }

//ActividadPrincipal.kt

 class MainActivity() : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener, SchedulableInserter<Incident>, SchedulableInserter<Assignment> { /* ^ ^ | | Sadly Kotlin says: Type parameter E of 'SchedulableInserter' has inconsistent values: Incident, Assignment A Supertype apperars twice */ }

Quiero decir que podría diferenciar dentro del método si vinculo SchedulerInserter a Schedulable, pero agradecería no tener que hacer eso.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Lo que sugeriría es tener los insertadores como propiedades en la actividad en lugar de interfaces implementadas:

 class MainActivity() : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { val incidentInserter = SchedulableInserter<Incident> { ... } val assignmentInserter = SchedulableInserter<Assignment> { ... } }

Para que esa sintaxis esté disponible, actualmente necesita definir SchedulableInserter en Java en lugar de Kotlin; de lo contrario tienes que escribir

 val incidentInserter = object : SchedulableInserter<Incident> { override fun ... }
over 4 years ago · Santiago Trujillo Relatório

0

Respondido por Ben P.

Solución:

Quiero decir que podría diferenciar dentro del método si vinculo SchedulerInserter a Schedulable, pero agradecería no tener que hacer eso.

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