Я какое-то время занимался android разработкой, но я всегда с нетерпением ждал, чтобы узнать что-то новое.
Я наткнулся на код ниже на codelab для модульного тестирования viewmodel. Мне очень нравится, что база кода упорядочена, но я не понимаю некоторые коды, подобные приведенному ниже.
Мне понравятся некоторые рекомендации по созданию класса с типом карты, как показано ниже.
В основном Я хотел бы знать, как Result <*> все еще относится к Result и почему класс просто называется / реализован как Success (it).
Буду признателен за доброе руководство.
sealed class Result<out R> {
data class Success<out T>(val data: T) : Result<T>()
data class Error(val exception: Exception) : Result<Nothing>()
object Loading : Result<Nothing>()
override fun toString(): String {
return when (this) {
is Success<*> -> "Success[data=$data]"
is Error -> "Error[exception=$exception]"
Loading -> "Loading"
}
}
}
/**
* `true` if [Result] is of type [Success] & holds non-null [Success.data].
*/
val Result<*>.succeeded
get() = this is Success && data != null
//implementation
override fun observeTask(taskId: String): LiveData<Result<Task>> {
return tasksDao.observeTaskById(taskId).map {
Success(it)
}
}