J'ai une requête qui n'a pas de résultat, lorsque la DB est vide. Par conséquent NULL est la valeur de retour correcte.
Cependant, le compilateur dans Android Studio me donne l'avertissement :
La condition 'maxDateTime != null' est toujours 'true'.
Si je débogue le code, la vérification de null fonctionne correctement car la valeur est en réalité null.
Quand je réécris l'interface en 'fun queryMaxServerDate(): String?' (remarquez le point d'interrogation), l'avertissement du compilateur disparait.
Mais ne devrait pas 'fun queryMaxServerDate(): String' résulter en une erreur de compilation puisque cela peut être null ?
@Dao
interface CourseDao {
// Obtenir la dernière entrée téléchargée
@Query("SELECT MAX(${Constants.COL_SERVER_LAST_MODIFIED}) from course")
fun queryMaxServerDate(): String
}
// appel de fonction
/**
* @return Date serveur la plus élevée dans la table en millisecondes ou 1 en cas de vide/erreur.
*/
fun queryMaxServerDateMS(): Long {
val maxDateTime = courseDao.queryMaxServerDate()
var timeMS: Long = 0
if (maxDateTime != null) { // Avertissement : La condition 'maxDateTime != null' est toujours 'true'
timeMS = TimeTools.parseDateToMillisOrZero_UTC(maxDateTime)
}
return if (timeMS <= 0) 1 else timeMS
}