Подтвердить что ты не робот

Как превратить Long в Int в Kotlin?

Я хочу сделать что-то вроде этого:

fun process(minutes: Int) = 0

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

и если я попробую process((System.currentTimeMillis() / 1000 / 60) as Int), я получаю ClassCastException во время выполнения.

Итак, как я могу преобразовать Long в Int?

4b9b3361

Ответ 1

Используйте Long.toInt():

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

Ответ 2

↓ Long.toInt() не является безопасным. потому что долго, чтобы int сокращается

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

Пожалуйста, добавьте эту функцию в произвольный файл kt. Затем метод с именем toIntOrNull добавляется в Long. Этот метод возвращает значение null, если он пытается преобразовать long в int, если он не помещается в интервал int.

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

или же

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