J'écris cette méthode générique pour récupérer des données à partir de Firebase? Dans certains cas, obtenir null retour est valide, dans d'autres cas ne l'est pas, est-il possible de vérifier si le param générique est nullable ou non?Kotlin - Vérifie si le paramètre générique est optionnel ou non?
ex
reference.obsrveObject(User.class)
devrait jeter si nul
reference.obsrveObject(User?.class)
devrait appeler OnNext avec la valeur null
fun DatabaseReference.observeSingleEvent(): Observable<DataSnapshot?> {
return Observable.create { subscriber ->
val valueEventListener = object: ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot?) {
subscriber.onNext(snapshot)
subscriber.onCompleted()
}
override fun onCancelled(error: DatabaseError?) {
subscriber.onError(FirebaseDatabaseThrowable(error))
}
}
addListenerForSingleValueEvent(valueEventListener)
}
}
fun <T>DatabaseReference.obsrveObject(clazz: Class<T>): Observable<T> {
return observeSingleEvent().map { snapshot ->
if (snapshot != null) {
snapshot.getValue(clazz)
}
else {
// if clazz is nullable return null
// if clazz is not nullabel throw
throw Exception("")
}
}
}
Merci, le résultat retourné doit-il être un observable de type optionnel? – aryaxt
Eh bien, si vous voulez être en mesure de revenir 'null' alors vous devez soit retourner' 'Observable ou' Observable ? '. Si vous voulez le plus tard, vous devriez pouvoir 'renvoyer null'. –
mfulton26
J'espérais pouvoir le définir comme optionnel en cas de besoin, c'est possible dans swift, n'est-ce pas à Kotlin? par exemple des données, données , de cette façon le type générique peut être définie comme facultative ou obligatoire en tant qu'utilisateur en cas de besoin –
aryaxt