RxJava 2 Observable
は、いかなる方法でもnull
を受け入れなくなりました。 map
ラムダはT?
を生成していますが、T
である必要があります。 DataSnapshot.getValue()
リターンがnullの場合NPE(Observable.error()
に包まれた)あなたは、入力が非nullであると仮定することができ、そしてあなたもDataSnapshot.getValue()
が非nullであると仮定した場合、あなたのコードはもちろん
fun <T : DatabaseModel> Observable<DataSnapshot>.toObjectObservable(type: Class<T>): Observable<T> {
return this.map {
val data = it.getValue(type)!!
data.setId(it.key)
data
}
}
に短縮し、これはなります。あなたが望むならば、それを落とすなどして、特別に扱うことができます。
fun <T : DatabaseModel> Observable<DataSnapshot>.toObjectObservable(type: Class<T>): Observable<T> {
return this.flatMap {
val data = it.getValue(type)
data.?setId(it.key)
if (data != null) Observable.just(data) else Observable.empty()
}
}