需要 <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
方法。
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
方法。