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

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 .