В этой строке State.error( e.message ?: "Unknown Error", e )
компилятор не знает, каким должен быть T
.Если вы сравните его с success
, вы увидите, что вы явно указали аргумент T
, который компилятор использует для вывода типа.Вы можете указать это так при вызове error:
State.error<TYPE_OF_SCHEDULE_REMINDER_LIST>( e.message ?: "Unknown Error", e )
Поскольку вы не используете T
в Error
, вы, вероятно, захотите удалить его полностью из запечатанного класса и использовать его только там, гдеэто имеет смысл.
sealed class State {
object Loading : State()
data class Error(val errorMessage: String?, val error: Throwable) : State()
data class Success<T>(var data: T) : State()
companion object {
fun loading(): State = Loading
fun error(errorMessage: String, error: Throwable): Error =
Error(errorMessage, error)
fun <T> success(data: T): Success<T> = Success(data)
}
}