由于密封就像枚举对象一样,所以我决定使用密封类进行网络响应,如果成功则包含成功或失败,如果成功则包含数据,否则包含错误消息
例子
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
*/
}
}
还有其他解决方法吗?
任何帮助
答案 0 :(得分:2)
假设getSomeDataFromService()
返回一个Single
,您应该可以使用Maybe.ofType():
getSomeDataFromService()
.toMaybe()
.ofType(Result.Success.F1::class.java)
.map {
...
}
如果getSomeDataFromService()
返回Observable
,则可以直接使用Observable.ofType()
。