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

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

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 Report

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