Требуется <Объект> и найден <Объект>?

class TaskRepo(taskData: TaskData) { companion object { private val repoByTask: LRUMap<String, OrderFormRepo> = LRUMap(2, 10); fun getInstance(taskData: TaskData): OrderFormRepo { if (notFoundObject(taskData.taskId)) { repoByTask[taskData.taskId] = OrderFormRepo(taskData); } return repoByTask[taskData.taskId];//PROBLEM HERE } private fun notFoundObject(taskId: String): Boolean { if (repoByTask.containsKey(taskId) && repoByTask[taskId] != null) { return false } return true } } 

}

в методе getInstance объекта-компаньона Я получаю ошибку времени компиляции : Требуется TaskRepo и найден TaskRepo?

LRUMap реализует интерфейс Map , метод get которого в Kotlin возвращает V? , так как он возвращает null если для данного ключа не присутствует элемент.

Поскольку вы уже делали проверку заранее в этом случае, вы можете быть достаточно уверенным (предполагая, что ни один другой поток не модифицирует карту в то же время), что это значение не будет равно NULL, и принудительное преобразование в недействительный тип с !! оператор :

 return repoByTask[taskData.taskId]!! 

Для других способов обработки отсутствующего ключа при чтении с Map см. getOrDefault и getOrElse .

Intereting Posts
Цвет материала для материалов Apple не применяется последовательно Прослушивание сообщений и написание команд по наблюдаемому потоку Выразить «супер» дженерики в функциональных типах Котлина? Как представить таблицу соединений с дополнительным полем с помощью eBean и Kotlin? Kotlin: сделать функцию Java invable infix Изменить порядок слов в строке в Котлине Альтернативы полем бокса или расширению ВСЕХ строк в Котлине? Должны быть объявлены локальные функции Котлина перед использованием "Coroutine local" переменные в kotlin Отклонение на уровне объявления может вызвать ClassCastException Внедрение onItemClickLitsner в recyclerView Kotlin -android Как я могу приостановить событие, проходящее через наблюдаемое? Как добавить изображение плюс в качестве кнопки в конце моего RecyclerView в Android? Kotlin и Dagger: могу ли я использовать объект @Inject для объекта, который все еще делает его нулевым / необязательным? Kotlin – Список сортировки с использованием форматированной строки даты (функциональной)