需要 <Object> 并找到 <Object>?

Required <Object> and found <Object>?

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 interface, the get 方法,在 Kotlin returns 一个 V? 中,当没有元素时 returns null为给定的键呈现。

由于您已经事先在这种情况下进行了检查,因此您可以合理地确定(假设没有其他线程同时修改映射)该值不会为空,并强制进行转换使用 !! operator:

的不可空类型
return repoByTask[taskData.taskId]!!

有关从 Map 读取时处理丢失键的其他方法,请参阅 getOrDefault and getOrElse 方法。