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

202
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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