IT-Swarm.Net

Comment convertir Long en Int en Kotlin?

Je veux faire quelque chose comme ça:

fun process(minutes: Int) = 0

fun test() {
    process(System.currentTimeMillis() / 1000 / 60) // error: Int expected
}

et si j'essaie process((System.currentTimeMillis() / 1000 / 60) as Int), je reçois une ClassCastException à l'exécution.

Alors, comment puis-je convertir Long à Int? 

17
netimen

Utilisez Long.toInt() :

process((System.currentTimeMillis() / 1000 / 60).toInt()) 
42

↓ Long.toInt () n'est pas la sécurité. parce que long int est rétréci

val l: Long
l.toInt() ←not safety! when out of int range

Veuillez ajouter cette fonction au fichier kt arbitraire à la place de . Ensuite, une méthode appelée toIntOrNull est ajoutée à Long . Cette méthode renvoie null si elle essaie de convertir long en int, si elle ne correspond pas à la plage de int.

fun Long.toIntOrNull(): Int? {
    return if (this < Int.MIN_VALUE || this > Int.MAX_VALUE) {
        null
    } else {
        this.toInt()
    }
}

ou

fun Long.toIntOrNull(): Int? {
    val i = this.toInt()
    return if (i.toLong() == this) i else null
}
1
Tom Marvolo Riddle