1
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 메소드에필수 입력 : <Object> : <Object>?

: 필수 TaskRepo을하고 TaskRepo을 발견?

답변

4

LRUMapMap 인터페이스 어떠한 요소가 지정된 키 존재하지 않을 때 null를 반환 같은 V?를 반환하는 코 틀린에 get의 방법을 구현한다.

이 경우 사전에 이미 확인한 것처럼이 값이 null이 아니며 (다른 스레드가지도를 동시에 수정하지 않는다고 가정하면)이 값이 null이되지 않을 것으로 합리적으로 확신 할 수 있으며 !! operator와 비 nullable 형식 :

return repoByTask[taskData.taskId]!! 

Map에서 읽을 때 누락 된 키를 처리하는 다른 방법의 경우는 getOrDefaultgetOrElse 방법을 참조하십시오.

+0

구조에 이중 강타 :-) – donfuxx

+0

getOrDefault는 최소한의 API 레벨 24가 필요합니다. –

관련 문제