не может разрешить ссылку на методы

У меня есть интерфейсы

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

И у меня есть класс, который содержит объект с типом 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() } } 

Но он не может разрешить ссылки

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

В чем проблема? Как ни странно, он не запрашивал импорт, несмотря на то, что находился в разных пакетах

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

Я пытался проверить на что-то более простое и получить ту же ошибку с 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) {

Вы создаете класс Generic с IConsumer параметром типа IConsumer . Этот параметр будет затенять интерфейс, который вы определили в этом классе, поэтому вы на самом деле говорите:

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

Вот почему он не может разрешить метод, поскольку общий параметр может быть интерпретирован только как Any .

Чтобы исправить либо изменить параметр типа, чтобы иметь соответствующие имена и class Generic<T : IConsumer>(val consumer : T) { ( class Generic<T : IConsumer>(val consumer : T) { ), либо полностью удалить генерики

Intereting Posts
Gradle. Котлин – возможно ли создать динамические задачи («на лету»)? Как повысить значение возвращаемого значения aa конструктора Реактивное весеннее имя 5-го уровня безопасности в Котлине Proguard – не запутывайте классы данных Kotlin Android Dagger: я не могу предоставить внешний класс без конструктора @Inject Kotlin – Несоответствие типа: Обязательно: String, Найдено: () -> String android.R.id просмотр привязки в Котлине Предполагаемый тип – Фрагмент! но ожидалось PlaceAutocompleteFragment почему kotlin использует === сравнить примитивный тип, равный друг другу, если они имеют одинаковое значение Котлин дважды проверяет нуль, если еще Android JUnit тест блокирует бесконечно, когда Observable наблюдается на AndroidSchedulers.mainThread () Покрытие кода Котлина в конвейере CI Код Vertx Sync работает несколько раз Kotlin mutableList () возвращается с карты :: getOrElse не выставляет add () Создание настраиваемой масштабируемой и масштабируемой ViewGroup, которая расширяет ConstraintLayout