no puede resolver la reference a los methods

Tengo interfaces

interface IIMSIdentifiable { fun setImsId(id : String) fun getImsId() : String } interface IIMSConsumer : IIMSIdentifiable { fun consumeAsync(message : GRLMessage) } 

Y tengo una class que contiene objects con el tipo IIMSConsumer

 class IMSObject<IIMSConsumer> : Thread { constructor(component : IIMSConsumer) { obj = component // IMSContext.instance.registerObject(this) // hm type mismatch } val objectMessageQueue = LinkedBlockingDeque<GRLMessage>() val obj : IIMSConsumer var isRunning = true override fun run() { while(isRunning) { processMessages() } } fun stopProcessing() { isRunning = false } fun processMessages() { objectMessageQueue.forEach { obj.consumeAsync(it) } } fun getObjectId() : String { return obj.getImsId() } } 

Pero no puede resolver las references

 fun processMessages() { objectMessageQueue.forEach { obj.consumeAsync(it) // cannot resolve reference !!! } } fun getObjectId() : String { return obj.getImsId() // cannot resolve reference !!! } 

¿Cuál es el problema? Curiosamente, no pidió importaciones a pesar de estar ubicadas en diferentes packages

 com.lapots.game.journey.ims.domain.IMSObject com.lapots.game.journey.ims.api.IIMSConsumer 

Traté de probar algo más simple y get el mismo error con unresolved reference

 interface IConsumer { fun consume() : String } class Generic<IConsumer>(val consumer : IConsumer) { fun invoke() { print(consumer.consume()) // unresolved reference } } fun main(args: Array<String>) { val consumer = object : IConsumer { override fun consume() : String { return "I consume" } } val generic = Generic<IConsumer>(consumer) generic.invoke() } 

class Generic<IConsumer>(val consumer : IConsumer) {

Está creando un Generic class con un parámetro de tipo genérico llamado IConsumer . Este parámetro de tipo sombreará la interfaz que definió dentro de esa class, por lo que realmente dice es:

class Generic<IConsumer : Any>(val consumer : Any) {

Es por eso que no puede resolver el método, ya que el parámetro genérico solo puede interpretarse como Any .

Para arreglar, cambie el parámetro de tipo para tener los nombres apropiados y enlazados ( class Generic<T : IConsumer>(val consumer : T) { ) o elimine los generics por completo

  • Kotlin - Constructor secundario de class con parámetro diferente
  • Genéricos de Kotlin: tipo de desajuste en el parámetro de map genérico
  • ¿Cómo extiendo la class Kotlin Number o uso generics para crear un getter de propiedad simple que operará en todas las subclasss Number?
  • ¿Cómo puedo llamar a un método principal desde un object complementario en kotlin?
  • Obtén la function por nombre dinámicamente en Kotlin
  • ¿Cómo iniciar el process de anotación (kapt) para la biblioteca local?
  • ¿Cuáles son los casos de uso de las properties en línea de Kotlin?
  • RxJava Observable.create envolver suscripciones observables
  • cómo usar Snackbar.make (ver, Str_Msg, Snackbar.LENGTH_SHORT) en kotlin
  • Tamaño de file grande al convertir bitmap a PDF
  • ¿por qué la llamada a setText () en un OnFocusChangeListener limpia el text en la vista?