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

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

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
kotlin: не может получить подтверждение аннотации api Функция расширения не создает новый объект Observable Intellij IDEA Kotlin Android Theme.AppCompat Ресурс не найден Почему интеллектуальное сканирование сбрасывается для значения NULL после установки значения и проверки, является ли оно нулевым? Mockito с тестированием асинхронного тестирования Kotlin Храните BaseActivity в Java совместимым с Kotlin Activity Какова политика совместимости Котлина? Почему параметр Integer метода Java сопоставляется с Int, а не с типом платформы? Guice MapBinder Нужно ли сначала изучать java, чтобы узнать kotlin? Или я могу начать его напрямую? Каков правильный синтаксис для переопределения функции члена интерфейса с помощью модификатора видимости? Ошибка при попытке ввести ViewModelProvider в действие с помощью Dagger2 и Kotlin Почему этот Spek на действии не запускается? Как регистрировать тела запроса и ответа в Spring WebFlux Как правильно переопределить метод, возвращающий экземпляр родового класса в Котлин