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 
    } 
} 

}必要<Object>と見つかりました<Object>?コンパニオンオブジェクトのgetInstanceメソッドで

私は時間エラーコンパイル取得しています: 必要TaskRepoをしてTaskRepoを見つけましたか?

答えて

4

LRUMapMapインターフェース、どの要素が指定されたキーの存在しない場合、それはnullを返すようKotlinに、V?を返すのget方法を実装します。

この場合、事前にチェックを済ませているので、この値がnullでないことを合理的に確信できます(マップを同時に変更している他のスレッドがないと仮定します)。 !! operatorと非NULL可能タイプ:

return repoByTask[taskData.taskId]!! 

Mapからの読み取り時に不足しているキーを処理するための他の方法の場合は、getOrDefaultgetOrElse方法を参照してください。

+0

レスキューにダブルバン: – donfuxx

+0

getOrDefaultは、最低限のAPIレベル24を必要とします。 –

関連する問題