[英]Android - Kotlin Sealed class with Rxkotlin filter
由於密封就像枚舉對象一樣,所以我決定使用密封類進行網絡響應,如果成功則包含成功還是失敗,如果包含成功則包含數據,否則返回錯誤消息
例
sealed class Result {
sealed class Success : Result() {
data class F1(val data: Any) : Success()
data class F2(val data: Any) : Success()
}
sealed class Error : Result() {
data class F1(val error: Any) : Error()
data class F2(val error: Any) : Error()
}
}
上面的Result類具有成功或失敗
getSomeDataFromService()
.filter {
it is Result.Success.F1
}
.map { it: Result
/*
i face problem here,my need is F1 data class but what i
got is Result ,i know that i can cast here,
but i am eager to know for any other solution other than casting
*/
}
}
還有其他解決方案嗎?
任何幫助
假設getSomeDataFromService()
返回Single
,則您應該能夠使用Maybe.ofType() :
getSomeDataFromService()
.toMaybe()
.ofType(Result.Success.F1::class.java)
.map {
...
}
如果getSomeDataFromService()
返回一個Observable
,則可以直接使用Observable.ofType()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.